2013-02-27 37 views
8

Tôi đang cố gắng xóa thẻ iFrame trong tài liệu của mình. Đây là chức năng. Nhưng nó dường như không hoạt động. Đây là mã mẫu của tôiXóa khung nội tuyến bằng javascript

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

Trả lời

16

Đây là tập lệnh bạn có thể chạy để xóa tất cả các iframe khỏi tài liệu của bạn. Dưới đây là ví dụ về thao tác này: http://jsfiddle.net/5hh9H/

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

wow! Mát mẻ! Cảm ơn bạn MattDiamant! – OneNation

+0

mã này không hoạt động đúng nếu có nhiều iframe, vì iframe trong trường hợp này là một bộ sưu tập trực tiếp, miễn là chúng tôi xóa iframe khỏi tài liệu –

+0

@ s.ermakovich Tôi không nghĩ đó là điều đúng nhất , nhưng tôi đã đổi nó thành một bộ sưu tập tĩnh. – MattDiamant

0

Bạn nên đặt khung nội tuyến bên trong phần tử div.

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

Sau đó, sử dụng jQuery để xóa khung nội tuyến.

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

Đây là giải pháp khả thi.

4

Bạn không đề cập đến lý do bạn cần xóa iframe trong tài liệu.

Tôi làm điều đó để ngăn chặn tấn công Clickjacking. Nhưng nó sẽ làm việc trong mọi trường hợp.

Bạn cần điều này:

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

và sau đó

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

Bạn có thể tìm thêm thông tin ở đây:

+0

tôi cũng thích câu trả lời này! – OneNation

Các vấn đề liên quan