2011-08-03 13 views
2

私の懸念事項は、私のサイトが複数の異なる広告業者から広告を動的に取り込むことです。だから別のドメインにサードパーティのJavaScriptの広告があるとしたら、それは私のサイト/ドメイン上でjavascriptを破ることができますか?私はjavascriptがドメインによってカプセル化されていると確信しています。別のドメインの外部JavaScriptでエラーが発生すると、自分のサイト/ドメインのJavaScriptが壊れますか?

http://mysite.com 
<script type="text\javascript" src="foo.com"> 
cause some error... 
</script> 
<script type="text\javascript" src="http://www.mysite.com/js/fooscript.js"> 
document.write("write something") 
</script> 
<script type="text\javascript" src="http://www.mysite.com/js/fooscript.js"> 
cause some other error... 
</script> 
<script type="text\javascript" src="http://www.mysite.com/js/fooscript.js"> 
document.write("write something else") 
</script> 

答えて

2

スクリプトにあらゆる種類のグローバル変数または関数が含まれる場合は、常に名前の競合の危険性があります。十分に書かれた図書館は、地球規模の空間で多くの変数を避けることによって、このリスクをできるだけ少なくします。

+0

私は変数には関心がありません。私は未処理の例外についてさらに考えており、後で実行されるコードにも影響します。 –

0

私はあなたの質問が好きです。これは、スピーカーが私たちのすべてのJSに名前空間を使用してほしいという話を思い出させます。ある名前空間に何らかの問題がある場合、他の名前空間は同じ資源を使用するまで影響を受けません。これは、オブジェクトのデフォルト動作を変更したり、独自のメソッドオブジェクトを拡張/作成したりしない同じ理由です。だからあなたのケースでは、JSがあなたのスクリプトによって使用されているグローバルオブジェクトを変更しているならば、そのスクリプトIMHO内のブレークダウンもスクリプトに影響するはずです。

+0

はい、これについて話してくれたMIX2011のプレゼンターが実際にいました。私は質問してきました。誰も答えを知らないか、それが答える価値があると感じるように私には思える。 –

+0

まあ、私の精神的なコーディングスキルはiframeスクリプトがグローバルな名前空間を混乱させない限り、メインの親ウィンドウのあなたのスクリプトはうまくいきます。私はこれをサポートするために便利なリンクを持っていません – Kumar

0

異なるドメインに格納された異なるスクリプトを読み込んでも、コードは常にブラウザの同じページで実行され、iframeを使用していない限り、他の環境はありません。

現在のJavaScript環境では、いずれかのスクリプトで発生したエラーがスローされるため、他のスクリプトが動作しなくなるか正しく動作しなくなる可能性があります(これはブラウザによって異なります)。