[英]Joomla file path issues with SEF enabled
我正在嘗試編寫一些自定義JS代碼以在joomla網站中加載其他js文件。 以下是代碼:
var j = jQuery.noConflict();
function loadJS(){
var i,l = arguments.length;
for (i=0;i<l;i++){
var t = document.createElement('script');
t.src = arguments[i];
document.body.appendChild(t);
}
}
j(document).ready(function(){
loadJS('1.js','2.js','3.js');
})
上面的代碼放在joomla_root/customJS
的ready.js
文件中, 1.js
, 2.js
, 3.js
也位於同一文件夾中。
但是這3個文件的加載都返回404錯誤。
啟用SEF后,加載它們的頁面的URL為localhost/index.php/pages/blog
(此處pages
和blog
不是實際的文件夾,而是菜單項),並且該頁面正嘗試加載localhost/index.php/pages/1.js
等
我可以使用諸如loadJS('../../customJS/1.js')
類的相對路徑來克服這一點,但這並不可靠。 如果菜單項blog
具有子菜單,則瀏覽器將在該頁面上嘗試加載localhost/index.php/1.js
並返回404錯誤。
那么該如何處理呢?
我可以看到兩種可能的解決方案。
1)第一個是將所有JS代碼從“ ready.js”移動到PHP文件中,以便您可以在任何腳本名稱之前插入“”。 基本上,JS是使用完整的網站根URL動態生成的。
2)第二個相似,但是只設置一個JS變量。 也就是說,您可以像這樣更改在其中調用ready.js的文件:
<script>var joomla_site_root_url = <?php echo JURI::root() ?></script>
<script src="/ready.js"></script>
然后在您的loadJS文件中
t.src = joomla_site_root_url + "/" + arguments[i];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.