我们网站的某些用户报告confirm
对话框出现了,但立即消失了,就好像它们被自动关闭一样。这似乎只影响Chrome,不影响其他浏览器(甚至不影响Chromium)。
搜索类似问题发现许多人抱怨confirm
中的onbeforeunload
对话框,但这不是我的问题:在这种情况下,这不是 。最初加载页面时(由jQuery confirm
触发)显示$(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模态窗口,但是使用整个库替换一行代码似乎很愚蠢。无论如何,本机浏览器警报在移动浏览器中看起来总是更好。
答案 0 :(得分:2)
我有完全一样的问题。这似乎是一个镀铬的问题。
这需要技巧。 就我而言,它通过使用setTimeout函数设置0.1秒的延迟来工作。
尝试一下。它将起作用。
NUM_FOR_YEAR
答案 1 :(得分:1)
就我而言,问题是由iframe引起的。我有一个youtube视频iframe,并且警报在显示后将关闭几毫秒。删除iframe后,一切恢复正常。
答案 2 :(得分:1)
就我而言,Facebook再营销像素是问题的根源。
答案 3 :(得分:0)
在我的情况下,单击事件功能中出现了用于确认对话框的问题。用“鼠标”代替“点击”即可解决问题。
答案 4 :(得分:0)
添加超时的一种稍微优雅但有效的方法是包括一个类似underscore.js的库,并以大约100ms的时间对处理函数进行去抖动。如果您拥有iFrame,则可能不是这种情况,但是如果没有iFrame,这绝对是一个问题,对我而言这立即起作用。
$("#my-selector").on("click", _.debounce(handleClick, 100));