質問

jquery $ .getScriptを使用してJavaScriptを実行します。実行されたスクリプトでは、ソースファイルの関数と変数にアクセスできません。

解決策はありますか?

役に立ちましたか?

解決

$ .getScript()によって実行されたスクリプト します グローバルコンテキストにアクセスできます。外部スクリプト内から任意のグローバル変数(またはその点で機能)を使用できます。

他のヒント

ニック・クレイバー、私は私のことがうまくいかない理由に夢中になって3時間(!)時間を費やし、あなたは私にそれを機能させるために必要な洞察を与えてくれました。

xoxoxoxoxoxoxo

興味深い:

このようなjquery varとして変数を宣言できます。

$variableName = something;

そうすれば、jQueryは範囲内のどこからでもアクセスできます。

$(function(){ 
    $alertString = 'Hello World'; 

    $.getScript('test.js', function(){ 
        // do nothing 
    });    
} 

test.js: 

alert( $alertString ); 

ここで答えがトピックを把握するのに役立ちましたが、私がたまに自分の文脈でそれを機能させることができませんでした TechMonksに関するこの記事:

最後の例をメインの.JSファイルの頭にコピー/貼り付けたとき、すべてが機能しました。少なくとも私にとっては、$ .getScript()関数が壊れていました。これは修正です。

jQuery.extend({
 getScript: function (url, callback) {
     var head = document.getElementsByTagName("head")[0] || document.documentElement;
     var script = document.createElement("script");
     script.src = url;

     // Handle Script loading
     {
         var done = false;

         // Attach handlers for all browsers
         script.onload = script.onreadystatechange = function () {
             if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                 done = true;
                 //success();
                 //complete();
                 if (callback) callback();

                 // Handle memory leak in IE
                 script.onload = script.onreadystatechange = null;
                 if (head && script.parentNode) {
                     head.removeChild(script);
                 }
             }
         };
     }

     head.insertBefore(script, head.firstChild);
     return undefined;
 }
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top