用JavaScript从HTML DOM树中剥离JavaScript
Strip JavaScript from HTML DOM Tree with JavaScript
如何从所有JavaScript事件中清除HTML DOM树,即:on(click|mouseover|etc)
, href:javascript...
, <script>
和所有其他可能的(内联)JavaScript变体,同时使用JavaScript?
例如:我希望用户上传他们的HTML文件,复制<body>
标签中的内容并将其插入我的一个页面。我不希望在他们的HTML文件中使用JavaScript。我可以使用<iframe sandbox>
,但我想知道是否有另一种方式。
下面使用元素。属性集合,删除内联on
处理程序和属性包含单词,"javascript" -不影响其他DOM属性。
function disableInlineJS() {
var obj = document.querySelectorAll('*');
for (var i = 0; i < obj.length; i++) {
for (var j in obj[i].attributes) {
var attr = obj[i].attributes[j];
if ((attr.name && attr.name.indexOf('on') === 0) ||
(attr.value && attr.value.toLowerCase().indexOf('javascript') > -1)
) {
attr.value= '';
}
}
}
}
<button onclick="disableInlineJS()">Disable inline JavaScript</button><hr>
<div onmouseover="this.style.background= 'yellow';" ONmouseout="this.style.background= '';" style="font-size:25px; cursor: pointer;">
Hover me
<br>
<a href="javAsCriPT:alert('gotcha')" style="font-weight:bold">Click me!</a>
<br>
<a href="http://example.com">Example.com!</a>
</div>
<button onclick="alert('gotcha')">Me, me!</button>
我认为没有办法在script
元素有机会运行之前删除它们。
相关文章:
- 如何在JavaScript中剥离数组元素中的非整数
- Javascript从字符串中剥离所有url参数
- 从javascript对象中剥离方法
- 如何在 javascript 中剥离 ipv6 地址
- 在javascript变量中剥离部分HTML内容
- 如何在javascript数组中剥离字符串的一部分
- document.body.innerHTML 在 IE 中剥离 JavaScript - bug
- 从其他字符串中剥离字符串,如果它以它使用 JavaScript 开头
- 有没有办法从 PHP 中的字符串中剥离所有 JavaScript
- JavaScript:去除元数据中的URL,而不剥离所有字符串中的空格
- 从字符串中剥离 javascript unicode 字符 8206
- 使用 Javascript 从 API 响应中剥离 @
- 从html中剥离邮件正文,并使用Javascript保留格式
- 当使用Javascript渲染时,IE上的外部CSS被剥离
- 使用白名单安全地剥离javascript中的html标签
- 剥离HTML标记,但将内容保留在(javascript/jquery)中
- 使用Content Javascript剥离HTML标记
- Selenium IDE javascript剥离最后一个字符
- 使用javascript剥离标签并处理换行
- Javascript剥离URL上的点