覆盖网页的alert()函数

时间:2013-11-15 23:39:37

标签: javascript html iframe override alert

我基本上试图阻止在我的网页中显示任何自定义对话框。 基本上是第三方广告网络,有时可能会使用某些恶意代码向最终用户显示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()。 我不太确定这是否可行,但还有任何建议吗?

1 个答案:

答案 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之外的所有可能值,因此这是属性将禁用的唯一功能。