如何从我的网页中删除一些javascript?

如何从我的网页中删除一些javascript?,javascript,jquery,html,Javascript,Jquery,Html,使用jquery.load()我将一些html从一个也包含javascript函数的文件加载到我的页面中 后来我尝试使用jquery.empty删除html和javascript,但似乎一旦脚本被浏览器解析,我就无法摆脱它,因此我正在寻找如何做到这一点的建议 以下是测试来源: index.html <head> <script src="//code.jquery.com/jquery-1.9.1.js" type="text/javascript"></scrip

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

后来我尝试使用
jquery.empty
删除html和javascript,但似乎一旦脚本被浏览器解析,我就无法摆脱它,因此我正在寻找如何做到这一点的建议

以下是测试来源:

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();
   });
 });

$(函数(){
$('#loadEmbScrpt')。单击(函数(){
$('#embDiv')。加载('http://maccyd10.hostoi.com/test.html');      
});
$('#remEmbScrpt')。单击(函数(){
$('#embDiv').empty();
});
});


test.html

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

$('#testButton')。在('单击',函数()上){
$('#output')。追加(“test

”); });
这里有一个指向上面的链接(由于XSS保护,我无法将其发布到JSFIDLE)


正如评论中提到的,一旦加载javascript,您就无法摆脱它

话虽如此,如果您希望撤消上面发布的脚本所做的更改,则
.off()
函数将取消绑定附加到处理程序的所有事件(因此,如果将任何其他事件附加到click,它们将被删除到)

e、 g.以下内容将从
$('loadEmbScrpt')
$('remEmbScrpt')
上的单击事件中解除函数的绑定:

或者,如果您希望将所有内容都放在一行中:

$('#loadEmbScrpt,#remEmbScrpt').off('click');

让我知道如果这解决了您的问题

正如在评论中提到的,一旦加载javascript,您就无法摆脱它

话虽如此,如果您希望撤消上面发布的脚本所做的更改,则
.off()
函数将取消绑定附加到处理程序的所有事件(因此,如果将任何其他事件附加到click,它们将被删除到)

e、 g.以下内容将从
$('loadEmbScrpt')
$('remEmbScrpt')
上的单击事件中解除函数的绑定:

或者,如果您希望将所有内容都放在一行中:

$('#loadEmbScrpt,#remEmbScrpt').off('click');
让我知道这是否解决了您的问题

正如其他人所提到的,DOM和Javascript VM是浏览器中两个独立的系统

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

Javascript虚拟机处理Javascript代码——它处理运行
标记中的任何Javascript代码或从外部js文件中提取的任何Javascript代码

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

当然,您可以从DOM中删除
元素,但在浏览器解析它之后,这对javascript VM没有任何影响,因为标记中的javascript代码已经被VM使用和执行。代码一旦运行,就不能取消运行

在示例JSFIDLE中,这一点更为清楚-删除包含函数的
元素并不意味着一旦
中的代码已经由VM执行,就不能再调用该函数。VM有自己的函数内部模型,执行后对DOM中原始代码的更改与它无关

在这种情况下,使用javascript从DOM中删除包含
元素实际上是毫无意义的——这只是多余的。DOM呈现引擎没有用,因为它不是一个可视元素,javascript虚拟机没有用,因为它已经处理了输入

要执行所需操作,应删除
#remEmbScrpt
按钮,并使用以下命令撤消加载脚本执行的绑定:

$('#testButton').off('click');
玩一下这个

正如其他人所提到的,DOM和Javascript VM是浏览器中两个独立的系统

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

Javascript虚拟机处理Javascript代码——它处理运行
标记中的任何Javascript代码或从外部js文件中提取的任何Javascript代码

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

当然,您可以从DOM中删除
元素,但在浏览器解析它之后,这对javascript VM没有任何影响,因为标记中的javascript代码已经被VM使用和执行。代码一旦运行,就不能取消运行

在示例JSFIDLE中,这一点更为清楚-删除包含函数的
元素并不意味着一旦
中的代码已经由VM执行,就不能再调用该函数。VM有自己的函数内部模型,执行后对DOM中原始代码的更改与它无关

在这种情况下,使用javascript从DOM中删除包含
元素实际上是毫无意义的——这只是多余的。DOM呈现引擎没有用,因为它不是一个可视元素,javascript虚拟机没有用,因为它已经处理了输入

要执行所需操作,应删除
#remEmbScrpt
按钮,并使用以下命令撤消加载脚本执行的绑定:

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

一旦添加javascript,您就无法摆脱它。你所能做的就是撤销它所做的。你不能,JavaScript不是这样工作的。一旦解析并执行了源代码,它就位于DOM之外。相反,您需要删除脚本添加的所有事件绑定。一旦添加了javascript,您就无法摆脱它。你所能做的就是撤销它所做的。你不能,JavaScript不是这样工作的。一旦解析并执行了源代码,它就