繁体   English   中英

如何防止谷歌浏览器抑制对话框?

[英]How to prevent Google Chrome suppressing dialogs?

当我尝试使用 prompt() 命令时,如何防止 Chrome 控制台出现以下错误?

由于此页面不是前窗口的活动选项卡,因此该页面生成的 window.prompt() 对话框被抑制。 请确保您的对话是由用户交互触发的,以避免这种情况。 https://www.chromestatus.com/feature/5637107137642496

直到 2-3 天前,prompt() 命令工作正常,并会打开一个对话框,我可以在其中输入数据,现在它总是给我这个错误,即使我肯定在活动选项卡上。 我已经检查了 chrome 内容设置并检查了允许弹出窗口。

谢谢!

这里的错误行为是因为,在使用开发人员工具进行调试时,开发人员工具窗口实际上是活动的。 一种解决方法是使用在实际调试的选项卡上呈现的播放或步进按钮,如下所示。

在此处输入图片说明

您必须将开发人员窗口停靠在同一窗口中。 不要取消停靠到单独的窗口。 这对我有帮助。 编辑:未停靠模式下的屏幕截图没有附加活动窗口。 它停靠在左边时 || 对|| 关闭窗口它工作正常

我在子窗口中写了这一行,然后在子窗口中弹出对话框,一切正常。

window.opener.confirm = window.confirm;

基本上prompt()仍然有效,但它要么必须是主代码的一部分(网页加载时预加载的脚本),否则如果这是从开发工具中尝试的,它根本无法工作 - 因为输出将显示在一个单独/不同的选项卡中,而不是您正在编码的选项卡(开发工具中的控制台)。

我想这是为了防止我们几年前开始出现的侵入性行为,即您在浏览 tab-x(例如 bbc 新闻)时突然专注于 tab y(例如盗版网站)以获得更多点击诱饵,而这全靠提示和警报。

为了确认或理解我在这里要解释的内容,请在您想要的任何选项卡上打开控制台/开发工具,粘贴:

setTimeout (function() {
    prompt("Comprende ?")
},5000);

在按下回车键后,通过单击任何不会将您重定向到您打开devtools的选项卡上的新页面的任何位置来快速切换焦点,几秒钟后提示将起作用。

在执行检查之前,基本上会提示将要执行的选项卡是可能拥有的无数打开的选项卡中的活动焦点选项卡。

在 window.prompt() 之前调用focus

window.focus(); // FIX: A window.prompt() dialog generated by this page was suppressed because this page is not the active tab of the front window.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM