Di joomla php sana saya dapat menggunakan $this->baseurl
untuk mendapatkan dasar jalan, tapi saya ingin mendapatkan basis path di jquery.
Basis path dapat menjadi salah satu contoh berikut:
http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
The contoh
juga dapat berubah.
Ini akan mendapatkan base url
var baseurl = window.location.origin+window.location.pathname;
Hal ini tidak mungkin dari javascript, karena ini adalah server-side properti. Javascript pada klien tidak tahu di mana joomla diinstal. Pilihan terbaik adalah untuk entah bagaimana mencakup nilai $this->baseurl
ke halaman javascript dan kemudian menggunakan nilai ini (phpBaseUrl
).
Anda kemudian dapat membangun url seperti ini:
var loc = window.location;
var baseUrl = loc.protocol + "//" + loc.hostname + (loc.port? ":"+loc.port : "") + "/" + phpBaseUrl;
Ini adalah aplikasi yang sangat lama, tapi di sini adalah pendekatan secara pribadi saya gunakan ...
Karena sudah banyak yang menyatakan, ini bekerja untuk kebanyakan situasi.
var url = window.location.origin;
Namun, pendekatan yang sederhana ini dapat digunakan untuk menanggalkan setiap nomor port.
var url = "http://" + location.host.split(":")[0];
Sebagai bonus -- URL dasar kemudian dapat didefinisikan ulang secara 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];
Tapi anda bisa't mengatakan bahwa baseurl() CodeIgniter(atau php joomla) akan mengembalikan nilai yang sama, karena itu adalah mungkin untuk mengubah baseurl dalam .htaccess file dari kerangka kerja ini.
Misalnya :
Jika anda memiliki .file htaccess seperti ini di 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]
$This->baseurl() akan kembali http://localhost/CodeIgniter/
Punya masalah yang sama beberapa waktu yang lalu, masalah saya adalah, saya hanya membutuhkan url dasar. Ada banyak pilihan rinci di sini, tetapi untuk mendapatkan sekitar ini, hanya menggunakan jendela.lokasi
objek. Sebenarnya jenis ini di konsol browser dan tekan enter untuk memilih pilihan anda di sana. Nah untuk kasus saya itu sederhana:
window.location.origin
I've lari ke kebutuhan ini pada beberapa proyek Joomla. Cara paling sederhana I've ditemukan untuk mengatasi adalah dengan menambahkan hidden field input untuk template saya:
<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
Ketika aku butuh nilai dalam JavaScript:
var baseurl = document.getElementById('baseurl').value;
Tidak sebagus menggunakan pure JavaScript tapi sederhana dan mendapatkan pekerjaan yang dilakukan.
Saya akan merekomendasikan untuk semua orang untuk membuat HTML tag dasar dalam pengembangan, kemudian menetapkan href secara dinamis, sehingga dalam produksi apapun host klien menggunakan, itu akan automacically addapt untuk itu:
<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>
...
Jadi jika anda berada di localhot:8080, anda akan mencapai setiap linked atau dirujuk file dari dasar, misalnya: http://localhost:8080/some/path/file.html
Jika anda berada di www.example.com itu akan menjadi http://www.example.com/some/path/file.html
Perhatikan juga bahwa, setiap lokasi yang anda're, anda tidak harus menggunakan referensi seperti gumpalan di href, misalnya: lokasi Orangtua penyebab http://localhost:8080/
tidak http://localhost:8080/some/path/
.
Lag referensi anda semua hyperlink sebagai penuh dihukum tanpa bas url.
Format adalah nama host/path/pencarian
Jadi url ini :
var url = window.location.hostname + window.location.pathname + window.location.hash
Untuk kasus anda
window.location.hostname = "stackoverflow.com"
window.location.pathname ="/questions/25203124/how-to-get-base-url-with-jquery-or-javascript"
window.location.hash = ""
Jadi pada dasarnya baseurl = hostname = window.lokasi hotel ini.hostname
dokumen.baseURI
kembali basis URL juga menghormati nilai di <dasar/>
tag
https://developer.mozilla.org/en-US/docs/Web/API/Node/baseURI
Aku hanya di panggung yang sama dan solusi ini bekerja untuk saya
Dalam pandangan
<?php
$document = JFactory::getDocument();
$document->addScriptDeclaration('var base = \''.JURI::base().'\'');
$document->addScript('components/com_name/js/filter.js');
?>
Di js file yang anda akses base
sebagai variabel misalnya dalam skenario anda:
console.log(base) // will print
// http://www.example.com/
// http://localhost/example
// http://www.example.com/sub/example
Saya tidak ingat di mana aku mengambil informasi ini untuk memberikan kredit, jika aku menemukannya, aku akan mengedit jawaban
Berikut ini's sesuatu yang cepat, yang juga bekerja dengan file://
Url.
Saya datang dengan ini satu-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+"://")]
Dalam kasus orang ingin melihat ini pecah menjadi sangat kuat fungsi
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;
}
Anda menyebutkan bahwa example.com
bisa berubah jadi saya menduga bahwa anda benar-benar perlu base url hanya untuk dapat menggunakan path relatif notasi untuk script anda. Dalam kasus ini tidak perlu menggunakan script - alih menambahkan tag dasar untuk header:
<head>
<base href="http://www.example.com/">
</head>
Saya biasanya menghasilkan link melalui PHP.
Menempatkan ini dalam kepala anda, sehingga akan tersedia kapanpun anda membutuhkannya.
var base_url = "<?php echo base_url();?>";
Anda akan mendapatkan http://localhost:81/your-path-file
atau http://localhost/your-path-file
.