正如標題所說,如果我刪除從DOM使用腳本標籤:當jQuery .remove()用於刪除腳本標記時,是否清除加載的javascript?
$('#scriptid').remove();
是否Javascript本身保留在內存中或正在清理?
或者......我完全誤解了瀏覽器對待javascript的方式嗎?這是很有可能的。
對於那些有興趣在我的理由,要求見下文:
我將一些常見的JavaScript交互從靜態腳本文件到PHP動態生成的。當用戶需要時,它們按需加載。
這樣做的原因是爲了移動邏輯服務器端並運行從服務器返回的小腳本,客戶端。客戶端,而不是一個包含大量邏輯的大腳本。
這是一個類似的方法是什麼Facebook並...
Facebook talks frontend javascript
如果我們就拿一個簡單的對話框。不是在javascript中生成html,而是將其附加到dom中,然後使用jqueryUI的對話框小部件來加載它,現在我正在執行以下操作。
- 的Ajax請求以dialog.php
- Server生成HTML和JavaScript特定於該對話框,然後將它們編碼爲JSON
- JSON返回給客戶端。
- 將HTML附加到
<body>
,然後一旦呈現,javascript也會附加到DOM中。
javascript在插入時自動執行並且動態對話框打開。
這樣做顯着減少了我的頁面上javasript的數量,但是我擔心清理插入的javascript。
顯然一旦對話已被關閉它是從使用jQuery的DOM移除:
$('#dialog').remove();
JavaScript的附加有ID和我也從DOM通過相同的方法除去這一點。
但是,如上所述,確實使用jQuery的.remove()實際上是從內存中清理掉javascript還是簡單地從DOM中刪除<script>
元素?
如果是這樣,有什麼辦法可以清理它嗎?
如果你關心創建對話框JS量,你可以看看EJS。這將允許您從JS創建HTML模板。 – westo 2012-03-14 12:04:13
感謝westo,我使用JsRender進行客戶端模板化。然而,我上面提到的方法不僅適用於對話框,還適用於模板不適合的其他很多交互。也許對話的例子不是很好。 – gordyr 2012-03-14 12:08:17