ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – Chrome会在没有任何用户互动的情况下立即解除confirm()提示

2019-10-08 07:34:53  阅读:176  来源: 互联网

标签:confirm javascript google-chrome


我们网站的一些用户报告确认对话框出现,但立即消失,就好像他们被自动解雇一样.这似乎只影响Chrome,而不是其他浏览器(甚至不是Chromium).

搜索类似的问题发现许多人抱怨在onbeforeunload中确认对话框,但这不是我的问题:这不是那种情况.页面最初加载时显示确认对话框(由jQuery $(document).ready()触发).

Chrome documentation显示确认不会激活其选项卡,并且在切换选项卡时将被取消.没关系:选项卡已经处于活动状态(页面加载时出现确认对话框),我很高兴在切换选项卡时将其解除.问题是它在没有任何用户交互的情况下立即被解雇.

我找到了one similar report,但在这种情况下,确认提示从未出现在第一位.看起来我们所看到的是不同的东西.

$(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);    
});

标签:confirm,javascript,google-chrome
来源: https://codeday.me/bug/20191008/1870808.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有