我基本上试图阻止在我的网页中显示任何自定义对话框。 基本上是第三方广告网络,有时可能会使用某些恶意代码向最终用户显示alert()。
我遇到了一种简单的方法,在主页上覆盖警报:
Window.prototype.alert = function() {console.log("alert prevented!")}
所以对于像这样的基本html页面,它可以正常工作:
<html>
<body>
<script>
Window.prototype.alert = function() {console.log("an alert was averted");}
</script>
<div>
<a onclick="alert(1)"> This is an alert inside the body</a>
</div>
</body>
</html>
但是在图片中引入iframe,iframe中的提醒会弹出。
我还想要实现的是,如果有一个<iframe>
或类似的HTML组件,基本上会创建一个单独的窗口,也不应该允许显示任何alert()。
我不太确定这是否可行,但还有任何建议吗?
答案 0 :(得分:0)
旧浏览器可能无法使用,但较新的浏览器会尊重iframe
中的sandbox
属性。 “较新”是指IE 10或更新或任何合理的新版Chrome或Firefox。请参阅support details。
例如,如果您只想禁用弹出窗口,请使用:
<iframe src=foo.html sandbox=
"allow-forms allow-pointer-lock allow-same-origin
allow-scripts allow-top-navigation."></iframe>
这里我列出了此属性值可能包含的除allow-popups
之外的所有可能值,因此这是属性将禁用的唯一功能。