我们网站的一些用户报告说confirm
对话框出现,但立即消失,就好像它们被自动关闭一样。这似乎只影响 Chrome,而不影响其他浏览器(甚至 Chromium)。
搜索类似问题发现很多人都在抱怨confirm
里面的对话onbeforeunload
,但这不是我的问题:这是not在那种情况下。这confirm
页面最初加载时显示对话框(由 jQuery 触发)$(document).ready()
).
The Chrome 文档表明confirm
不会激活其选项卡,并且在切换选项卡时将被关闭。没关系:该选项卡已经处于活动状态(confirm
对话框出现在页面加载时),我很高兴在切换选项卡时将其关闭。问题是它会立即被驳回,而无需任何用户交互。
I found 一份类似的报告,但在这种情况下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 模式窗口,但使用整个库来替换一行代码似乎很愚蠢。无论如何,本机浏览器警报在移动浏览器中看起来往往更好。
我有完全相同的问题。这似乎是一个镀铬问题。
这需要一个技巧。
就我而言,它是通过使用 setTimeout 函数设置 0.1 秒延迟来实现的。
尝试这个。它会起作用的。
function doConfirm() {
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";
}
}
$(document).ready(function() {
setTimeout(function(){ doConfirm() }, 100);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)