我试图编写一些自定义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');
})
以上代码放在ready.js
中的joomla_root/customJS
文件中,1.js
,2.js
,3.js
也在同一文件夹中。
但是这3个文件的加载都返回404错误。
启用SEF后,加载它们的网页的网址为localhost/index.php/pages/blog
(此处pages
和blog
不是实际文件夹,而是菜单项),并且网页正在尝试加载{ {1}}等等。
我可以使用像localhost/index.php/pages/1.js
这样的相对路径来克服这个问题,但它不可靠。如果菜单项loadJS('../../customJS/1.js')
有子菜单,则在该页面上,浏览器将尝试加载blog
并返回404错误。
那么如何处理这个问题呢?
答案 0 :(得分:0)
我可以看到两种可能的解决方案。
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];