În joomla php nu pot folosi $acest->baseurl
pentru a obține cale de bază, dar am vrut pentru a obține cale de bază în jquery.
Cale de bază poate fi orice de la următorul exemplu:
http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
De exemplu
pot, de asemenea, schimba.
Acest lucru va obține url-ul de bază
var baseurl = window.location.origin+window.location.pathname;
Acest lucru nu este posibil din javascript, deoarece acesta este un server-side de proprietate. Javascript pe client nu poate ști unde joomla este instalat. Cea mai bună opțiune este de a include într-un fel valoare de $acest->baseurl în pagină javascript și apoi utilizați această valoare (phpBaseUrl
).
Apoi, puteți construi url-ul astfel:
var loc = window.location;
var baseUrl = loc.protocol + "//" + loc.hostname + (loc.port? ":"+loc.port : "") + "/" + phpBaseUrl;
Aceasta este o extrem de întrebare veche, dar aici sunt abordări eu personal folosesc ...
După cum au menționat deja, acest lucru funcționează pentru cele mai multe situații.
var url = window.location.origin;
Cu toate acestea, această abordare simplă poate fi utilizată pentru benzi de pe orice numere de port.
var url = "http://" + location.host.split(":")[0];
Ca un bonus-URL-ul de bază poate apoi fi redefinite la nivel global.
document.head.innerHTML = document.head.innerHTML + "<base href='" + url + "' />";
var getUrl = window.location;
var baseurl = getUrl.origin; //or
var baseurl = getUrl.origin + '/' +getUrl.pathname.split('/')[1];
Dar poate't spune că baseurl() de CodeIgniter(sau php joomla) va returna aceeasi valoare, deoarece este posibil pentru a schimba baseurl în .htaccess din aceste cadre.
De exemplu :
Dacă aveți o .htaccess ca aceasta din localhost :
RewriteEngine on
RewriteBase /CodeIgniter/
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
La $acest->baseurl() va returna http://localhost/CodeIgniter/
Avut aceeasi problema acum ceva timp, problema mea a fost, pur și simplu am nevoie de url-ul de bază. Există o mulțime de opțiuni detaliate aici, dar pentru a obține în jurul valorii de acest lucru, pur și simplu utilizați fereastra.locație` obiect. De fapt tipul asta in consola browser și apăsați enter pentru a selecta opțiunile de acolo. Ei bine, pentru cazul meu a fost simplu:
window.location.origin
Am've rula în această nevoie pe mai multe Joomla proiect. Cel mai simplu mod de am'am găsit la adresă este de a adăuga un câmp de introducere ascuns la modelul meu:
<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
Când am nevoie de valoarea în JavaScript:
var baseurl = document.getElementById('baseurl').value;
Nu la fel de elegant ca folosind pură JavaScript, dar simplu și devine treaba.
Mi-ar recomanda pentru toată lumea pentru a crea HTML tag de bază în dezvoltare, apoi atribuiți href dinamic, atât în producția orice gazdă un client foloseste, se va automacically popularitate, pentru că:
<html>
<title>Some page title</titile>
<script type="text/javascript">
var head = document.getElementsByTagName('head')[0];
var base = document.createElement("base");
base.href = window.document.location.origin;
head.appendChild(base);
</script>
</head>
...
Deci, dacă sunteți în localhot:8080, va ajunge la fiecare legătură sau trimitere fișier de bază, de exemplu: http://localhost:8080/some/path/file.html
Dacă sunteți în www.example.com, acesta va fi http://www.example.com/some/path/file.html
De asemenea, rețineți că, în fiecare locație're pe, nu trebuie să utilizați referințe, cum ar fi globuri în hrefs, de exemplu: locație Părinte cauze http://localhost:8080/ " nu " http://localhost:8080/some/path/
.
Pretent ai referință toate hyperlink-uri la fel de plin condamnat fără bas url-ul.
Formatul este hostname/cale/căutare
Așa că url-ul este :
var url = window.location.hostname + window.location.pathname + window.location.hash
Pentru cazul dumneavoastră
window.location.hostname = "stackoverflow.com"
window.location.pathname ="/questions/25203124/how-to-get-base-url-with-jquery-or-javascript"
window.location.hash = ""
Deci, practic baseurl = hostname = window.locație.hostname
document.baseURI
returnează URL-ul de bază, de asemenea, respectarea valorii în `<bază/> tag
https://developer.mozilla.org/en-US/docs/Web/API/Node/baseURI
Am fost pe aceeași scenă și această soluție funcționează pentru mine
În opinia
<?php
$document = JFactory::getDocument();
$document->addScriptDeclaration('var base = \''.JURI::base().'\'');
$document->addScript('components/com_name/js/filter.js');
?>
În js fișiere de acces "de bază" ca o variabilă, de exemplu, în scenariul tău:
console.log(base) // will print
// http://www.example.com/
// http://localhost/example
// http://www.example.com/sub/example
Nu-mi amintesc unde am lua aceste informații pentru a da de credit, dacă voi găsi, voi edita răspunsul
Aici's ceva rapid, care, de asemenea, funcționează cu file://
Url-uri.
Am venit cu acest one-liner:
[((1!=location.href.split(location.href.split("/").pop())[0].length?location.href.split(location.href.split("/").pop())[0]:(location.protocol,location.protocol+"//" + location.host+"/"))).replace(location.protocol+"//"+location.protocol+"//"+location.protocol+"://")]
În cazul în care cineva ar dori să vadă acest izbucnit într-o foarte robust funcție
function getBaseURL() {
var loc = window.location;
var baseURL = loc.protocol + "//" + loc.hostname;
if (typeof loc.port !== "undefined" && loc.port !== "") baseURL += ":" + loc.port;
// strip leading /
var pathname = loc.pathname;
if (pathname.length > 0 && pathname.substr(0,1) === "/") pathname = pathname.substr(1, pathname.length - 1);
var pathParts = pathname.split("/");
if (pathParts.length > 0) {
for (var i = 0; i < pathParts.length; i++) {
if (pathParts[i] !== "") baseURL += "/" + pathParts[i];
}
}
return baseURL;
}
Ați menționat că example.com
se poate schimba, așa că am bănuit că de fapt ai nevoie de url-ul de bază doar pentru a fi capabil de a utiliza calea relativă notație pentru script-uri. În acest caz nu este nevoie de a utiliza scripting - în loc să adăugați etichetă de bază pentru antet:
<head>
<base href="http://www.example.com/">
</head>
Eu, de obicei, de a genera link-ul prin intermediul PHP.
A pune acest lucru în header-ul, astfel încât acesta va fi disponibil ori de câte ori aveți nevoie de ea.
var base_url = "<?php echo base_url();?>";
Veți obține http://localhost:81/your-path-file " sau " http://localhost/your-path-file
.