1

問題は、あるスクリプトが以前にロードされたスクリプトまたは含まれているスクリプトを削除した場合、Web アプリケーションの非同期ロードで何が起こるかということです。

いくつかのスクリプトを含めてみましょう:

<script src="Squel.js" async="" type="text/javascript"></script>
<script src="PSquel.js" async="" type="text/javascript"></script>
<script src="MySquel.js" async="" type="text/javascript"></script>

マークアップによってインクルードされるか、requireJS を介して動的にインクルードされるかに関係なく、非同期スクリプト インクルードは同じ順序で行われます。

MySquel.js ファイルの内容は、次の悪意のあるコードである可能性があります。

document.getElementsByTagName('script').forEach(function(val,i,arr){
if(/PSquel/.test(val.src)){
val.parentNode.removeChild(val);
}
}

もちろん、質問はブラウザ固有のものですが、特定のブラウザでメモリホールを開く癖があることに興味があります。あなたが知っているエッジケースにも興味があります!

セキュリティで保護されていない可能性のあるスクリプトの読み込みに関して、あなたが知っているエッジ ケースのいずれかで、あなたの応答に非常に感謝しています! ありがとう。

4

2 に答える 2

2

何もない。<script>ノードは DOM から削除されますが、それらを介してロードされた JavaScript の実行中に発生したことを元に戻すことはできません。実際には、これらはインスタンス化された後は何の役にも立たないため、スクリプトのダウンロードと評価がトリガーされます。

影響を受ける可能性がある唯一のものは、存在する DOM ノードに依存する他のスクリプトです。たとえば、テンプレート文字列、コンテンツの場所の URL、またはその他のデータをそれらから読み取ります。

于 2013-02-08T23:07:49.040 に答える
0

発生する唯一のことは、スクリプト内のソース コードがなくなることです。

スクリプトは既に解析および実行されており、Javascript オブジェクト (関数オブジェクトなど) が作成されており、ソース コードを削除してもそれらのオブジェクトは消えません。

于 2013-02-08T23:03:39.857 に答える