0

我正在尝试编写一些自定义 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/customJS1.js, 2.js,3.js也在同一个文件夹中。

但是这 3 个文件的加载都返回 404 错误。

启用 SEF 后,加载它们的页面的 URL 是localhost/index.php/pages/blog(这里不是实际的文件夹pagesblog而是菜单项),并且页面正在尝试加载localhost/index.php/pages/1.js等。

我可以使用相对路径loadJS('../../customJS/1.js')来克服这个问题,但它并不可靠。如果菜单项blog有子菜单,则在该页面上浏览器将尝试加载localhost/index.php/1.js并返回 404 错误。

那么如何处理这个问题呢?

4

1 回答 1

0

我可以看到两种可能的解决方案。

1)第一个是将“ready.js”中的所有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];
于 2015-07-07T07:10:01.047 回答