ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript_javascript ヒントの動的読み込みによって引き起こされるメモリ リークを防ぐ

JavaScript_javascript ヒントの動的読み込みによって引き起こされるメモリ リークを防ぐ

WBOY
WBOYオリジナル
2016-05-16 18:45:12973ブラウズ

スクリプトリソースを解放するために、通常、復帰後にいくつかの追加処理が実行されます。

コードをコピー コードは次のとおりです。

script = document.createElement('script' );
script.src =
'http://example.com/cgi-bin/jsonp?q=人生の意味とは何ですか?'; 🎜>script .type = 'text/javascript';
script.charset = 'utf-8';
// タグが head に追加されると、自動的にロードされて実行されます。
var head = document.getElementsByTagName('head')[0];
head.appendChild(script)


実際、多くの人気のある JS ライブラリはこのメソッドを使用してスクリプトを作成しますタグにIDを割り当てた後、スクリプト(YUI get()など)をロードし、ロード後にタグをクリアしてコールバックします。問題は、これらのスクリプト タグをクリアすると、ブラウザは単にタグ ノードを削除するだけであることです。


var script = document.getElementById('JSONP ');
script.parentNode.removeChild(script);


ブラウザはこのタグ ノードを削除するとき、ノード内の JavaScript リソースに対してガベージ コレクションを実行しません。ノード内の JavaScript リソースが削除されるだけでは不十分です。スクリプト ラベル ノードのコンテンツを手動でクリアする必要があります。


// 古いスクリプト タグを削除します。
var script;
while (script = document.getElementById() 'JSONP')) {
script.parentNode.removeChild(script);
// ブラウザーは、これらのプロパティによって指定されたオブジェクトをリサイクルしません。
//メモリ リークを避けるために、オブジェクトを手動で削除します。 🎜>for (スクリプト内の var prop) {
スクリプトを削除 [prop]
}
}

;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。