2013-02-27 157 views
8

我正试图删除我的文档中的iFrame标记。 这是功能。但它似乎并不奏效。这里是我的示例代码使用javascript删除iframe

<script> 
function removeiframe() { 
      alert("Hello Lovely World"); 
      var markup = document.body.innerHTML; 

      var filtered=markup.replace(/(<iframe.*?>.*?<\/iframe>)/g,""); 
      alert("he: " + markup); 
//markup = Regex.Replace(markup, @"<script.*?/script>", "", RegexOptions.IgnoreCase); 
//markup = Regex.Replace(markup, @"<iframe.*?/iframe>", "", RegexOptions.IgnoreCase); 
markup = filtered; 
document.body.innerHTML = markup + "<hr><hr>HELLO"; 
     } 
</script> 
<body onload="removeiframe()"> 

     <iframe marginheight="0" src="http://www.metalgearrisingguide.com" marginwidth="0" frameborder="0" height="180" scrolling="no" width="210"></iframe><br> 
</body> 

回答

16

这是一个可以运行的脚本,它将从文档中删除所有的iframe。下面是这个工作的一个例子:http://jsfiddle.net/5hh9H/

var iframes = document.querySelectorAll('iframe'); 
for (var i = 0; i < iframes.length; i++) { 
    iframes[i].parentNode.removeChild(iframes[i]); 
} 
+0

哇!凉!谢谢MattDiamant! – OneNation 2013-02-27 10:11:04

+0

如果存在多个iframe,则此代码无法正常工作,因为此例中的iframe是一个实时集合,只要我们从文档中删除iframe即可更新 – 2016-02-12 10:26:12

+0

@ s.ermakovich我不认为这必然是正确的,但是无论如何我都将它改为静态集合。 – MattDiamant 2016-02-12 20:15:35

0

您应该将iframe放入div元素中。

<div id="kk"> 
    //your iframe 
</div> 

然后使用jQuery删除iframe。

$('#kk').click(function(){ 
    $(this).html(""); 
}); 

这是一个可能的解决方案。

4

你没有提到为什么你需要删除的文件iframe中。

我这样做是为了防止点击劫持攻击。但它会在任何情况下工作。

你需要这样的:

<style id="defendClickjack" type="text/css">body{display:none;}</style> 

然后

<script type="text/javascript"> 
    if (self === top) { 
     var defendClickjack = document.getElementById("defendClickjack"); 
     antiClickjack.parentNode.removeChild(defendClickjack); 
    } 
    else { 
     top.location = self.location; 
    } 
</script> 

您可以在这里找到更多的信息:

+0

我也喜欢这个答案! – OneNation 2013-02-27 10:11:26