【问题标题】:Can Javascript know if a user has selected the box that disables alerts (Prevent page from creating additional dialogues) [duplicate]Javascript可以知道用户是否选择了禁用警报的框(防止页面创建其他对话框)[重复]
【发布时间】:2016-05-25 10:28:48
【问题描述】:

我有一个删除按钮,在 .mouseup 上它会创建一个警报弹出窗口,让用户确认或取消删除该对象。

这是我的 js:

$(".deleteIcon")
.mouseover(function() { $(this).closest('li').css("opacity", "0.7"); 
}).mouseout(function() { $(this).closest('li').css({ "opacity": "1", "background-color": "#89b8d7" });
}).mousedown(function() { $(this).closest('li').css("background-color", "#b71124");
}).mouseup(function() {   
var txt;
    var r = confirm("Are you sure you want to delete this file?");
    if (r == true) {
        $(this).closest('li').css("display", "none");
    } else {
        $(this).closest('li').css("display", "inline-block;");
    }

     });

问题: 如果用户选择(阻止此页面创建额外的对话框)选项 - 它完全禁用删除功能。

问题: 如何更改当前代码以在用户禁用弹出框时创建回退。 例如: 我将如何编写代码,以便如果用户禁用弹出警报以确认删除对象,那么无论如何都会删除该对象而没有任何额外的警告。

谢谢!

-编辑/澄清:

我想我真正的问题是是否有可能在 javascript 中知道用户是否选中了禁用警报的框,然后根据该信息创建一个函数。

所以我并不是要阻止用户禁用弹出窗口。但是我的弹出窗口为我的对象启用了删除功能。所以我只是想添加一些 javascript 来知道用户是否禁用了警报,如果是这样,那么删除的按钮无论如何都会删除该对象,而没有任何弹出安全网询问用户是否确定他们想删除它。我真的很喜欢用户可以禁用警报,以防他们觉得烦人。

【问题讨论】:

  • 使用自定义对话框,如引导模式(例如)。这不会触发停止显示对话框的选项,因为它不是真正的对话框(如警报或确认弹出窗口)。
  • 是的,我试图避免这种情况。有没有办法编写我的代码,例如“如果阻止对话框 = 检查然后 $(this).closest('li').css("display", "none"); ?
  • 否 - 您将不得不使用非弹出对话框。没有办法解决它。
  • 如果您只能处理被阻止的对话框,那将破坏阻止对话框的全部目的(从用户的角度来看)。
  • 这可能会有所帮助...stackoverflow.com/questions/25182520/… 向下滚动以查看我的答案。

标签: javascript jquery alert


【解决方案1】:

EDIT 转换为 wiki,因为与 how to know whether modal boxes (alert, prompt, confirm…) have been disabled in javascript? 重复

您可以做的是测量对话框可见的时间。

如果它只在几毫秒内可见,那么它很可能根本没有显示,或者用户立即将其关闭:

function customConfirm( msg ) {
  var startTime = new Date();
  var result = confirm(msg);
  var stopTime = new Date();

  if( stopTime.getTime() - startTime.getTime() < 100 ) {
     //do some fallback 
     //and call callback depending on how you implemented the fallback
  } else {
     callback(result);
  }
}

customConfirm('Are you sure you want to delete this file?', function(r) {
  if (r == true) {
    $(this).closest('li').css("display", "none");
  } else {
    $(this).closest('li').css("display", "inline-block;");
  }
});

【讨论】:

  • 我有一个启动警报的按钮。如果警报无法启动,是否无法使用该按钮执行其他操作?我将如何编写这样的代码?我是个新手。
  • 这段代码是在说:如果警报在那段时间内未能显示,那么做其他事情。 ?
  • so on .mouseup 如果警报在 x-amount-of-time 内不可用/不可见,则执行以下操作:“...”代替?
  • 哦,哇,好吧,我玩这个并尝试添加到我当前的代码中。谢谢!
猜你喜欢
  • 2012-07-28
  • 1970-01-01
  • 2023-03-11
  • 2011-08-16
  • 2013-06-26
  • 2017-09-14
  • 2021-07-27
  • 1970-01-01
  • 2012-09-17
相关资源
最近更新 更多