Remove iframe with javascript

2019-02-21 13:45发布

问题:

I am trying to remove iFrame tags in my documents. This is the function. But it don't seem to work. Here is my sample code

<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>

回答1:

Here's a script you can run that will remove all the iframes from your document. Here's an example of this working: http://jsfiddle.net/5hh9H/

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


回答2:

You didn't mention why you need to remove iframes in the document.

I do it in order to prevent Clickjacking attack. But it will work in any cases.

You need this:

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

and then

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

You can find more information here:

  • https://www.owasp.org/index.php/Clickjacking
  • http://en.wikipedia.org/wiki/Clickjacking


回答3:

You should put the iframe inside of a div element.

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

Then use jQuery to remove the iframe.

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

This is a possible solution.



回答4:

Pure Javascript code:

document.querySelectorAll('iframe').forEach(
  function(elem){
    elem.parentNode.removeChild(elem);
});