2

3 つの言語があるとします: entcsc、以下の条件を達成したい

1) 現在が の場合、 headenに追加en.jsして js ファイルを削除tc.jssc.jshead

2) 現在が の場合、 headtcに追加tc.jsして js ファイルを削除sc.jsen.jshead

3) 現在が の場合、 headscに追加sc.jsして js ファイルを削除tc.jsen.jshead

誰かがjQueryでそれを行う方法をアドバイスできますか?

ありがとう

4

4 に答える 4

16

これは、言語パラメータに基づいてスクリプトを動的にロードするクイック関数です。

addLanguageScript = function(lang) {
    var head = document.getElementsByTagName("head")[0],
        script = document.createElement('script');

    script.type = 'text/javascript'
    script.src = lang + '.js'
    head.appendChild(script);
};

addLanguageScript('en');

ファイルを削除するには、jQueryのようなことを行うことができますが、ロードされたスクリプトがすでに何らかの効果を持っている可能性があることに注意してください。

$("script[src='en.js']").remove()
于 2012-10-12T07:26:27.107 に答える
3

がロードされると、document動的に実行することはできません。しかし、JavaScript ファイルおよびモジュール ローダーであるスクリプトrequire.jsがあります。

ブラウザ内での使用に最適化されていますが、Rhino や Node.js などの他の JavaScript 環境でも使用できます。RequireJS のようなモジュラー スクリプト ローダーを使用すると、コードの速度と品質が向上します。

jQuery で使用するための優れたサポートがあります。ページのロード後にコードをオンザフライでロードすることもできます。上記のリンクをチェックしてください。間違いなくあなたの問題を対象としています。

于 2012-10-12T07:25:21.650 に答える
2

そもそもなぜファイルを削除するのですか? それらがページ ヘッドにある場合は、それらが既に実行されていることを意味します。

Yesnope JS-module loader を使用すると、ソリューションは次のようになります。

yepnope({
  test : lang=="en",
  yep : ['en.js']
});

http://yepnopejs.com/

ところで、このモジュール ローダーは Modernizr で使用されます。

于 2012-10-12T07:30:15.907 に答える