正如标题所说,如果我删除从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