首页 / 知识
如何检测浏览器是否阻止弹出窗口?
2023-04-11 17:14:00

How can I detect if a browser is blocking a popup?有时候,我遇到一个试图弹出一个新窗口(用于用户输入或重要信息)的网页,但是弹出窗口阻止程序阻止了这种情况的发生。 调用窗口可以使用哪些方法来确保新窗口正常启动? 如果您使用JavaScript打开弹出窗口,则可以使用如下所示的内容:
我尝试了上面的许多示例,但无法使它们与Chrome一起使用。这种简单的方法似乎适用于Chrome 39,Firefox 34,Safari 5.1.7和IE11。这是我们JS库中的代码段。
更新: 过去,恶意网站经常滥用弹出式窗口。错误的页面可能会打开大量带有广告的弹出窗口。因此,现在大多数浏览器都尝试阻止弹出窗口并保护用户。 如果大多数浏览器在诸如onclick之类的用户触发的事件处理程序之外调用,则会阻止弹出窗口。 如果您考虑一下,那会有些棘手。如果代码直接位于onclick处理程序中,则很简单。但是在setTimeout中打开的弹出窗口是什么? 试试这个代码:
弹出窗口在Chrome中打开,但在Firefox中被阻止。 …这在Firefox中也适用:
区别在于,Firefox将超时时间定为2000毫秒或更短时间是可以接受的,但是在此之后,假定现在是"超出用户操作范围",则删除"信任"。因此,第一个被阻止,第二个未被阻止。 2012年最新的原始答案:
希望这可以帮助! :) 无论浏览器公司或版本如何,始终可以使用的一种"解决方案"是,在屏幕上的警告信息仅出现在控件附近,该控件将弹出一个窗口,礼貌地警告用户该操作需要弹出窗口。并请为网站启用它们。 我知道这不是花哨的东西,但是它变得更简单了,只需要大约5分钟的测试,然后您就可以进行其他噩梦了。 一旦用户允许您的网站弹出式窗口,如果您不过度使用弹出式窗口,这也将是体贴的。您要做的最后一件事就是使您的访客烦恼。
我结合了@Kevin B和@DanielB的解决方案。
用法:
如果您还拥有子代码,则一种简单的方法是在其html中创建一个简单的变量,如下所示:
然后从父级检查它的存在,类似于以下内容:
我们等待一段时间以确保网页已加载,并检查其存在。 我已经尝试了许多解决方案,但是我唯一能想到的解决方案也可以与uBlock Origin一起使用,那就是利用超时检查弹出窗口的关闭状态。
显然,这是黑客。像所有解决此问题的方法一样。 您需要在setTimeout中提供足够的时间来考虑初始的打开和关闭,因此永远不会完全准确。这将是反复试验的位置。 将此添加到您的尝试列表。 通过使用onbeforeunload事件,我们可以进行如下检查
它将在背景中打开2个黑色窗口 该函数返回布尔值。 |
最新内容
相关内容
python可以做网页编程吗?
python可以做网页编程吗?,技术,公司,数据,网络,人工智能,工资,分析,工作,设计,市场,什么是Python? Python是一种计算机编程语言,也是一种python怎么解析网页数据
python怎么解析网页数据,数据,培训,信息,标准,工具,网页,结构,标签,对象,以上,python网页解析器1、常见的python网页常见的python网页解析工python浏览器能运行python吗
python浏览器能运行python吗,代码,平台,智能,培训,灵活,项目,文件,语法,插件,浏览器,py文件不是html文件,当然不能在浏览器里打开。py文件可以python网页中下拉框的操作
python网页中下拉框的操作,信息,培训,选项,元素,操作,标签,对象,下标,属性,表示,python网页中下拉框的操作1、只要是第一次打开页面可以加载pythonchardet检测编码
pythonchardet检测编码,检测,培训,代码,字段,概率,中文,两者,表示,以上,语言,pythonchardet检测编码1、当我们拿到一个bytes时,就可以对其检测关于svg:在浏览器中显示矢量图形
关于svg:在浏览器中显示矢量图形,关于svg:在浏览器中显示矢量图形,附加,事件处理,显示,网站,Displaying vector graphics in a browser关于跨浏览器:使用CSS创建圆角
关于跨浏览器:使用CSS创建圆角,关于跨浏览器:使用CSS创建圆角,圆角,是一个,很好,如何使用,Creating rounded corners using CSS如何使关于浏览器:使用收藏夹图标的首选方
关于浏览器:使用收藏夹图标的首选方式?,关于浏览器:使用收藏夹图标的首选方式?,网站,图标,转储,根目录,Preferred way to use favicons?关于Windows:用于存储用户可配置应
关于Windows:用于存储用户可配置应用程序设置的注册表与INI文件,关于Windows:用于存储用户可配置应用程序设置的注册表与INI文件,配置关于身份验证:用于登录ID的内容是什
关于身份验证:用于登录ID的内容是什么?,关于身份验证:用于登录ID的内容是什么?,帐户,重写,企业,设计阶段,What to use for login ID?我们SQL Server Management Studio替代
SQL Server Management Studio替代品,用于浏览/编辑表和运行查询,SQL Server Management Studio替代品,用于浏览/编辑表和运行查询,选关于c#:对ASP.NET 2.0网页进行单元测
关于c#:对ASP.NET 2.0网页进行单元测试的最佳方法是什么?,关于c#:对ASP.NET 2.0网页进行单元测试的最佳方法是什么?,工具,有什么,方法来,