如何从网页中删除一些JavaScript?

安德鲁

随着jquery.load()我从也包含javascript函数的文件中将一些html加载到我的页面中。

稍后我尝试使用删除html和javascript,jquery.empty但似乎一旦浏览器解析了脚本,我将无法摆脱它,因此我正在寻找有关如何执行此操作的建议。

以下是测试源:

index.html

<head>
<script src="//code.jquery.com/jquery-1.9.1.js" type="text/javascript"></script>
<script>
$(function(){
  $('#loadEmbScrpt').click(function(){
       $('#embDiv').load('http://maccyd10.hostoi.com/test.html');      
     });
   $('#remEmbScrpt').click(function(){
      $('#embDiv').empty();
   });
 });

<body>
<div id="embDiv"></div>
<div id="output"></div>
<input type="button" id="loadEmbScrpt" value="embed script into page"/>
<input type="button" id="remEmbScrpt" value="remove embedded script from page"/>
<input type="button" id="testButton" value="run embedded script test function"/>
</body>

test.html

<script>
$('#testButton').on('click',function(){
 $('#output').append("<p>test</p>");
});
</script>

这是上面操作的链接(由于XSS保护,我无法将其发布到jsfiddle)。

http://maccyd10.hostoi.com

达夫尼克维尔

玩这个http://jsfiddle.net/6eWRQ/

就像其他人提到的那样,DOM和Javascript VM是浏览器中的两个独立的系统。

DOM是浏览器要呈现的HTML文档的内部模型。它处理诸如HTML元素之类的HTML元素<script>及其在HTML文档中的位置。

Javascript VM处理javascript代码-它处理在<script>标记内运行或从外部js文件提取的任何Javascript代码

似乎一旦浏览器解析了脚本,我就无法摆脱它

当然可以<script>从DOM中删除该元素-但是在浏览器对其进行解析之后,这将对javascript VM产生零影响-因为该标签内的javascript代码已经被VM使用并执行了。一旦代码运行,就不能取消运行。

在示例jsfiddle的情况下,这更加清楚-删除<script>包含函数元素并不意味着一旦<script>VM中的代码已被执行,就不能再调用该函数VM具有自己的函数内部模型,执行后在DOM中对原始代码的更改与它无关。

<script>在这种情况下,使用javascript从DOM中删除包含元素实际上是没有意义的-这只是多余的。DOM呈现引擎没有用,因为它不是视觉元素,而javascript VM也没有用,因为它已经被处理了输入。

要执行您想要的操作,您应该删除#remEmbScrpt按钮,而使用以下命令撤消已加载脚本执行的绑定:

$('#testButton').off('click');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章