删除HTML脚本标记会对它所包含的JavaScript产生任何影响吗
Does removing an HTML script tag have any affect on the JavaScript that it contains?
根据我的测试,脚本标记可以从DOM中删除,而不会对其包含的JavaScript产生任何影响
此测试在执行的过程中破坏了脚本DOM节点。即使这对脚本没有影响,在从DOM中移除脚本标记之后,变量count
也会被分配值1
。
<!DOCTYPE html>
<html lang="en">
<head>
<title> Test </title>
<script id="jQueryScriptTag" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<button id="testBtn">Click to test</button>
<div id="output"></div>
<script id="testCodeScriptTag">
var count;
$("#jQueryScriptTag").remove();
$("#testCodeScriptTag").remove();
$("#output").append(
"<p>jQueryScriptTag is " + document.getElementById("jQueryScriptTag") + "</p>" +
"<p>testCodeScriptTag is " + document.getElementById("testCodeScriptTag") + "</p>" +
"<p>count is " + count + "</p>"
);
count = 1;
$("#testBtn").click(function(){
$("#output").append(
"<p>count is " + (count++) + "</p>"
);
});
</script>
</body>
</html>
用例是从主机站点安全地删除注入的第三方脚本元素。
在执行#testCodeScriptTag
的内容时,它们已经从DOM中提取、加载到JavaScript引擎中并进行解析。DOM中的文本不再以任何方式连接到执行代码,这是HTML5规范所要求的:
1.初始化脚本块的源,如下所示:
…
如果脚本是内联的并且脚本块的类型是基于文本的语言
上次设置元素的"已启动"标志时文本IDL属性的值是脚本源
…
4.使用脚本块的源、从中获取脚本的URL、脚本块的类型作为脚本语言以及脚本元素的Document的Window对象的脚本设置对象来创建脚本
…
注意:这是编译和实际执行脚本的地方。
另请参阅:http://www.w3.org/TR/html5/webappapis.html#creating-脚本
相关文章:
- 任何浏览器都不支持javascript函数
- 创建一个数组数组,没有任何重复的Javascript
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 是否有任何JavaScript UI组件可以显示字符串之间的差异
- javascript从任何嵌入式flash视频中发现.flvurl
- 在任何AJAX调用之前触发一个javascript函数
- 是否有任何设置阻止JavaScript在系统上工作
- 是否有任何Javascript函数从指定的索引中进行正则表达式匹配
- Regex&Javascript:忽略wxyz.jpg之前的任何内容
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- json字符串的Javascript帖子:没有任何东西传入或返回
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- javascript测试是否存在两个标志中的任何一个
- JavaScript:任何改变CSS伪:before和:after的机会或替代方案
- 浏览器Javascript - 任何了解用户当前IP的方法
- JavaScript:任何计划在未来版本中实现线程
- JavaScript:任何创建X轴网格的方法,并在放置角色的游戏中使用它
- 哪种浏览器更适合使用javascript?任何其他工具
- CORS, SQLite和JavaScript.任何不需要本地服务器访问实际数据库的方法
- 创建一个从RSS提要更新的新闻Ticker-Javascript/任何语言