【发布时间】:2018-07-09 16:48:05
【问题描述】:
我们网站的一些用户报告说confirm 对话框出现了,但立即消失了,就好像它们被自动关闭一样。这似乎只影响 Chrome,而不影响其他浏览器(甚至 Chromium)。
搜索类似问题会发现很多人抱怨onbeforeunload 中的confirm 对话框,但这不是我的问题:在那种情况下不是。 confirm 对话框在页面初始加载时显示(由 jQuery $(document).ready() 触发)。
Chrome documentation 表明confirm 不会激活其选项卡,并且在切换选项卡时将被关闭。没关系:选项卡已经处于活动状态(confirm 对话框出现在页面加载时),我很高兴在切换选项卡时它被关闭。问题是它会立即被解除,没有任何用户交互。
我找到了one similar report,但在这种情况下,confirm 提示从未出现过。看起来我们看到的是不同的东西。
$(document).ready(function() {
var c = confirm('Are you sure you wish to delete this entry?');
if (c) {
$.ajax(
'/api/show/competition/delete',
{
'method': 'POST',
'data': { 'id' : 9 },
'dataType': 'json',
'complete': function(response, status) {
if (response.responseJSON.error) {
alert(response.responseJSON.message);
window.location.reload();
} else {
document.location.href = "/show/application/competition";
}
}
}
);
} else {
document.location.href = "/show/application/competition/entry/9";
}
});
如有必要,我们可以使用 jQuery 模态窗口,但使用整个库来替换一行代码似乎很愚蠢。无论如何,原生浏览器警报在移动浏览器中往往看起来更好。
【问题讨论】:
-
您确定它不是弹出窗口阻止程序或 chrome 阻止它,因为没有触发用户操作来显示提示。
-
在您的链接中,通过删除一些扩展然后重新启动浏览器解决了问题。你确定这不是这个问题的问题(也许他们有广告拦截器)?
标签: javascript google-chrome confirm