簡體   English   中英

使用JavaScript從HTML DOM樹中剝離JavaScript

[英]Strip JavaScript from HTML DOM Tree with JavaScript

在使用JavaScript時,如何從所有出現的JavaScript中清除HTML DOM樹,這意味着: on(click|mouseover|etc)href:javascript...<script>和(inline)JavaScript的所有其他可能的變體?

例如:我希望用戶上載HTML文件,將內容復制到<body>標記中,然后將其插入到我的頁面之一中。 我不想在其HTML文件中使用JavaScript。 我可以使用<iframe sandbox> ,但是我想知道是否還有另一種方法。

下面使用Element.attributes集合刪除處理程序和包含單詞“ javascript”的屬性的內聯on而不會影響其他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元素運行之前將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM