谷歌浏览器不显示一个站点的警报()弹出窗口

Posted

技术标签:

【中文标题】谷歌浏览器不显示一个站点的警报()弹出窗口【英文标题】:Google chrome not displaying alert() popups for one site 【发布时间】:2013-10-31 23:34:51 【问题描述】:

我正在开发一个 javascript 循环,该循环会在循环进行时提醒每个键值。

为了加快速度,我选中了“防止此页面创建其他对话框”框。通常这只会抑制一个例程的弹出窗口,但它们还没有回来。

在 Google Chrome 中,alert() 消息不再从该站点弹出。其他网站有,但那个网站没有。

有人听说过这个吗?

问:如何重置该站点的 alert() 消息?

【问题讨论】:

也许 Chrome 正在帮您一个忙:忘记 alert 并开始使用控制台吧! 这是一个超级用户类型的问题,但请查看弹出管理器support.google.com/chrome/answer/95472?hl=en-GB @Adam 你可能是对的。我打开了很多标签,我正在尽一切努力避免这种情况。请将此想法作为答案发布,以便我可以接受它是否有效。 我推荐下面 chharvey 的解决方案作为最优雅的解决方案(关闭选项卡然后重新打开它) 【参考方案1】:

罗伯托关于在正文结束之前放置脚本命令的回答对我有用。我花了几个小时试图弄清楚为什么我的控制台命令不起作用。

【讨论】:

欢迎来到 SO。请避免在答案部分添加 cmets【参考方案2】:

把这行放在body的最后,可能是编译器读到这行的时候DOM还没有准备好

<script type="text/javascript" src="script.js"></script>"

【讨论】:

【参考方案3】:

未经测试,但如果您再次遇到问题,我认为在隐身窗口中打开该网站会重置对话框。

编辑:我添加了这个适用于 Chrome 构建的答案。更新可能使这变得不必要(感谢不要被标记下来!)

【讨论】:

你完全正确!比弹跳浏览器更好的解决方案。谢谢。 从 Chrome 39 开始,我可以打开一个新标签页或窗口 - 不必隐身 @Rocco——同意。看我的回答。 @KjetilNordin:我认为这与 cookie/会话有关。隐身模式不会维护您的 cookie。当然,谷歌的一个人阅读了这个答案并解决了这个问题。【参考方案4】:

您无需重新启动浏览器。只需关闭选项卡并重新打开它。它不需要是隐身模式。

【讨论】:

我确认这是可行的,并认为它是最优雅的解决方案,谢谢。【参考方案5】:

您所要做的就是重新启动浏览器。在另一个浏览器上尝试它,看看它是否有效,如果它有效(即,你能看到你的弹出窗口吗?),那么你应该能够重新启动浏览器来修复它。

这发生在我的谷歌浏览器上,我通过退出并重新打开浏览器来修复它。

【讨论】:

【参考方案6】:

如果您想检测这些是否被阻止。您将不得不对将要显示的消息做自己的事情,但会覆盖本机警报/确认。

window.nativeAlert = window.alert;
window.alert = function (message) 
var timeBefore = new Date();
var confirmBool = nativeAlert(message);
var timeAfter = new Date();
if ((timeAfter - timeBefore) < 350) 
    MySpecialDialog("You have alerts turned off, turn them back on or die!!!");
  


window.nativeConfirm = window.confirm;
window.confirm = function (message) 
var timeBefore = new Date();
var confirmBool = nativeConfirm(message);
var timeAfter = new Date();
if ((timeAfter - timeBefore) < 350) 
    MySpecialDialog("You have alerts turned off, turn them back on or die!!!");

 return confirmBool;

显然我已将时间设置为 3.5 毫秒。但经过一些测试后,我们只能在大约 5 毫秒内单击或关闭对话框

【讨论】:

这背后的逻辑是什么?我知道每一行的作用,但是如果警报被抑制,为什么这会“发现”? 我们正在使用框架(糟糕),用户能够在一个页面上关闭它们,然后在其他任何地方都看不到它们。这是一个问题,因为某些验证依赖于确认回调(再次糟糕)。当确认被阻止时,返回值为 false。更糟糕的是,确认没有显示。所以用户提交并且不知道为什么页面没有做任何事情。糟糕设计的解决方法,相信我,我讨厌它,但它是一个庞大的遗留应用程序。解决方法为我们节省了大量时间。 感谢您的解释,但我的问题不是关于检查警报抑制的必要性,而是为什么该代码可以告诉您它已被抑制。我不明白为什么 3.5 毫秒后很明显警报被抑制了。谁可以在 3.5 毫秒内点击警报?我很困惑。 另外:“或死”短语 - 这是 php 内部的笑话吗?哈哈! @SeanKendle 我喜欢让我的用户感到恐惧,我发现死亡威胁非常有效。【参考方案7】:

来自 OP:

解决办法是重启浏览器。丢失我所有的标签?不!!!

但是,有一种方法可以重新启动浏览器而不会丢失所有标签。

安装会话管理器插件。 Chrome 和 Firefox 都有一个会话管理器版本。

会话管理器会维护您打开的选项卡的运行列表,并会在意外重启或系统崩溃后自动询问您是否要重新打开它们(“恢复会话”)。

此外,会话管理器可让您按需保存选项卡并在稍后或重新启动后重新加载它们。您可以随时保存“会话”(所有打开的选项卡),并为会话指定您想要的任何名称。

最后,在重新加载之前的会话时,您还可以选择重新打开哪些选项卡以及忽略哪些选项卡。

在 Chrome 或 Firefox 中都离不开它。

Chrome extension

Firefox extension

如果您使用的是 IE 。 . .好吧,你还有其他问题。

【讨论】:

我认为您不需要为此进行扩展,因为浏览器本身将具有要设置的属性,如启动时您可以选择continue where you left off,您可以在浏览器设置中找到它... 【参考方案8】:

重新启动浏览器,这应该会重置该选项并显示新的对话框。

【讨论】:

以上是关于谷歌浏览器不显示一个站点的警报()弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

谷歌浏览器怎样设置每次点击连接时都会弹出一个新窗口

谷歌浏览器显示不全

怎么设置IE8弹出窗口在新标签里显示

取消google浏览器在最前端显示

谷歌浏览器部分图片不能打印

windows11谷歌浏览器上传附件显示空白页面是怎么回事