:jQueryの.remove()は、スクリプトタグを削除するときに読み込まれたjavascriptをクリアしますか?タイトルが言うように、私が使用してDOMからスクリプトタグを削除する場合は、
$('#scriptid').remove();
をジャバスクリプト自体がメモリに残っていたり、それが洗浄されますか?
または...私はブラウザがjavascriptを扱う方法を完全に誤解していますか?これはかなり可能です。
を私はPHPで動的に生成されたものに静的なスクリプトファイルからいくつかの一般的なJavaScriptの相互作用を動かしています:下記参照尋ねるための私の理由に興味のある人のための
。ユーザーが必要なときにオンデマンドでロードされます。
これを行う理由は、ロジックサーバーを移動してサーバーから返された小さなスクリプトを実行するためです。クライアント側。膨大な量のロジックを含んだ大きなスクリプトを用意するのではなく、クライアント側。私たちは、インスタンスのためのシンプルなダイアログを取る場合
これはFacebookが何をするか...
Facebook talks frontend javascript
と同様のアプローチです。 htmlをjavascriptで生成するのではなく、domに追加してjqueryUIのダイアログウィジェットを使ってロードします。次のようにします。
- Ajaxリクエストは
- Serverは、このダイアログはその後、JSON
- JSONはクライアントに返されるようにそれらをコード化するために、特定のあるHTMLとJavaScriptを生成dialog.phpさせています。
<body>
にHTMLが追加されると、これがレンダリングされると、javascriptもDOMに追加されます。
JavaScriptは挿入時に自動的に実行され、動的ダイアログボックスが開きます。
これを行うと、私のページ上のjavasriptの量が大幅に減少しましたが、挿入されたjavascriptのクリーンアップが心配です。ダイアログが閉じられた後
もちろん、それはjQueryのを使用してDOMから削除されます。
$('#dialog').remove();
javascriptのは、IDが付加されており、私も同じ方法を経由してDOMからこれを削除します。
しかし、前述のように、jQueryの.remove()を使用すると、実際にJavaScriptからメモリを消去するか、単純にDOMから<script>
要素を削除しますか?
もしそうなら、これをクリーンアップする方法はありますか?
EJSを見ることができます。これにより、JSからHTMLテンプレートを作成できます。 – westo
私はwestoに感謝します。クライアント側のテンプレート作成にはJsRenderを使用します。しかし、私が上で述べたアプローチは、ダイアログだけでなく、テンプレートが適切でない他の多くのやりとりのためのものです。おそらくダイアログの例は良いものではありませんでした。 – gordyr