0

joomla Webサイトで他のjsファイルをロードするカスタム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.js2.js3.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

考えられる解決策は 2 つあります。

1) 1 つ目は、すべての JS コードを「ready.js」から PHP ファイルに移動して、スクリプト名の前に「」を挿入できるようにすることです。基本的に、JS は完全なサイト ルート URL で動的に生成されます。

2) 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 に答える