2016-11-18 16 views
1

を設定するのは、誰かが自分のサイトに次のように挿入したいとしましょう:このような状況でJSは、外部スクリプトをロードし、ローカル

<script type="text/javascript" src="https://foo.com/plugin.js"></script> 
<script type="text/javascript"> 

    Plugin.Setup({userId: 100}); 

</script> 

plugin.js「セットアップ」の方法を持っている「プラグイン」オブジェクトを作成します。

問題は、次のエラーがスローされるということです:あなたは未定義のオブジェクトのメソッドを呼び出すことはできませんので、理解しやすい

Uncaught ReferenceError: Plugin is not defined 

このアプローチでは、問題を修正します:

<script type="text/javascript" src="https://foo.com/plugin.js"></script> 
<script type="text/javascript"> 
    function initiatePlugin() { 
     Plugin.Setup({userId: 100}); 
    } 

    window.addEventListener ? window.addEventListener('load', initiatePlugin) : window.attachEvent && window.attachEvent('onload', initiatePlugin); 
</script> 

しかし、私は他のプラグインは、この種のもので逃げる参照してください。たとえばTypeKitは、次の埋め込みコードを持っている:彼らは頼っている何

<script src="https://use.typekit.net/sgye3663.js"></script> 
<script>try{Typekit.load({ async: true });}catch(e){}</script> 

は「Typekit.load」を呼び出し、エラーがスローされる場合には、外部スクリプトhttps://use.typekit.net/sgye3663.js負荷速くローカルスクリプトよりもということで、 Typekitは決して読み込まれません。

これはプラグインの設計について正しい方法ですか?または、ウィンドウのロードイベントを待つほうがよいでしょうか?

+0

コードを実行するためにページが読み込まれるまで待つ方が良いです。 'typekit.load()'はちょうどあなたが望むのと同じように、イベントリスナーにすぎないようです。 – ppovoski

答えて

0

ページが完全に読み込まれるまで待ってから、外部オブジェクトからメソッドを実行することをお勧めします。

関連する問題