如何从我的网页中删除一些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不是这样工作的。一旦解析并执行了源代码,它就