使用javascript删除iframe
我正在尝试删除文档中的iFrame标记。 这就是函数。但它似乎不起作用。这是我的示例代码使用javascript删除iframe,javascript,html,regex,iframe,Javascript,Html,Regex,Iframe,我正在尝试删除文档中的iFrame标记。 这就是函数。但它似乎不起作用。这是我的示例代码 <script> function removeiframe() { alert("Hello Lovely World"); var markup = document.body.innerHTML; var filtered=markup.replace(/(<ifra
<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.hotelanswer.com" marginwidth="0" frameborder="0" height="180" scrolling="no" width="210"></iframe><br>
</body>
函数removieframe(){
警惕(“你好,可爱的世界”);
var markup=document.body.innerHTML;
var filtered=markup.replace(/(.*?)/g,“”);
警惕(“他:+标记);
//markup=Regex.Replace(标记@“”,RegexOptions.IgnoreCase);
//markup=Regex.Replace(标记@“”,RegexOptions.IgnoreCase);
标记=过滤;
document.body.innerHTML=标记+“
你好”;
}
您应该将iframe放在div元素中
<div id="kk">
//your iframe
</div>
这是一个可能的解决方案。您可以运行一个脚本,该脚本将从文档中删除所有iFrame。下面是一个这样工作的例子:
var-iframes=document.querySelectorAll('iframe');
对于(var i=0;i
您没有提到为什么需要删除文档中的iframe
我这样做是为了防止点击劫持攻击。但它在任何情况下都会起作用
你需要这个:
<style id="defendClickjack" type="text/css">body{display:none;}</style>
body{display:none;}
然后
<script type="text/javascript">
if (self === top) {
var defendClickjack = document.getElementById("defendClickjack");
antiClickjack.parentNode.removeChild(defendClickjack);
}
else {
top.location = self.location;
}
</script>
如果(自我===顶部){
var defencClickJack=document.getElementById(“defencClickJack”);
antiClickjack.parentNode.removeChild(DefendencClickJack);
}
否则{
top.location=self.location;
}
您可以在此处找到更多信息:
- 纯Javascript代码:
document.querySelectorAll('iframe').forEach(
function(elem){
elem.parentNode.removeChild(elem);
});
如果您只想在移动设备上执行此操作,则可以对原始示例稍加改进。对我来说,使用案例是我在我的站点上使用Vimeo嵌入来创建视频背景。我需要放弃手机上的视频来表现。这就行了
$( document ).ready(function() {
let isMobile = window.matchMedia("only screen and (max-width:650px)").matches;
if (isMobile) {
var iframes = document.querySelectorAll('iframe');
for (var i = 0; i < iframes.length; i++) {
iframes[i].parentNode.removeChild(iframes[i]);
}
}
});
如果你有一个iFrame的网格,也许一行中有几个嵌入式视频
document.querySelectorAll("foo > .bar > iframe")
或者从同一个数据源得到更好的结果
document.querySelectorAll("iframe[data-src]")
如果我在某个地方出错,请有人纠正我如果有多个iframe,则此代码无法正常工作,因为本例中的iframe是一个实时集合,只要我们从中删除iframe,它就会更新document@s.ermakovich我认为这不一定是正确的,但我还是把它改成了静态集合。
document.querySelector(".foo > bar iframe")
document.querySelector("foo bar > iframe")
document.querySelectorAll("foo > .bar > iframe")
document.querySelectorAll("iframe[data-src]")