如何从我的网页中删除一些 JavaScript
How can I remove a some javascript from my webpage?
有了jquery.load()
,我从一个也包含javascript函数的文件加载了一些html到我的页面中。
后来我尝试使用 jquery.empty
删除 html 和 javascript,但似乎一旦脚本被浏览器解析,我就无法摆脱它,所以我正在寻找有关如何执行此操作的建议。
以下是测试源:
索引.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>
测试.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元素,如<script>
及其在HTML文档中的位置。
Javascript VM 处理 JavaScript 代码 - 它处理在 <script>
标记或从外部 js 文件中提取的任何 Javascript 代码。
似乎一旦脚本被浏览器解析,我就无法摆脱它
您当然可以从 DOM 中删除 <script>
元素 - 但在浏览器解析它之后,这将对 javascript VM 产生任何影响 - 因为标签中的 javascript 代码已经被 VM 使用和执行。代码运行后,无法取消运行。
在示例 jsfiddle 的情况下,这一点更加清楚 - 删除包含函数的 <script>
元素并不意味着一旦 VM 已经执行了<script>
中的代码,就不能再调用该函数。VM 有自己的函数内部模型,在执行后对 DOM 中的原始代码的更改与它无关。
在这种情况下,使用 javascript 从 DOM 中删除包含<script>
元素实际上是没有意义的 - 它只是多余的。DOM 渲染引擎对它没有用处,因为它不是一个可视元素,而 javascript VM 对它没有用处,因为它是已经处理过的输入。
若要执行所需的操作,应删除"#remEmbScrpt
"按钮,并改为使用以下操作撤消加载的脚本执行的绑定:
$('#testButton').off('click');
正如评论中提到的,一旦加载了javascript,你就无法摆脱它。
话虽如此,如果您希望撤消上面发布的脚本所做的更改,.off()
函数将取消绑定所有附加到处理程序的内容(因此,如果任何其他事件附加到单击,它们将被删除)。
例如,以下内容将从$('#loadEmbScrpt')
和$('#remEmbScrpt')
上的单击事件中解绑函数:
$('#loadEmbScrpt').off('click');
$('#remEmbScrpt').off('click');
或者,如果您希望全部在一行中:
$('#loadEmbScrpt,#remEmbScrpt').off('click');
让我知道这是否解决了您的问题
- 删除javascript中的大Blob
- 删除javascript中包含特定单词的行
- 可以clearTimeout删除JavaScript中已触发超时事件的未处理回调
- 如何删除javascript中的不透明度
- 如何筛选要写入新文档的HTML,删除JavaScript中的某些类和/或ID
- 如何删除JavaScript画布呈现上下文的状态堆栈
- 将数组中的重复项转换为唯一项,而不删除Javascript中的任何项
- 从 DOM 中删除/删除 Javascript 用户定义的数组
- 如何删除 JavaScript 对象中具有相同键的所有元素
- 使用替换函数删除 Javascript 中元素的类
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法
- 如何删除 javascript 中某些字符之前的所有逗号
- 删除 JavaScript 中的全角和半角字符
- 滑动以删除JavaScript
- 只删除javascript中的1个动态元素
- 如何删除Javascript对象属性
- 如何删除javascript数组中的空白元素
- 删除Javascript中小数后的数字
- 删除javascript中的decimal
- 从ASP.NET MVC部分视图中卸载/删除javascript函数