3

我正在开发一个 MVC4 Web 应用程序。

我使用 javascript 和 jquery 来做很多事情。但是对于这样的信息:

在此处输入图像描述

我使用 alert() 函数向用户显示各种消息。问题是,用户可以阻止此警报出现。如果用户这样做,很多重要的消息和信息将不会显示给他。

如何使用户无法阻止警报出现?

对不起,我的英语不好。谢谢

4

6 回答 6

8

你不能——谢天谢地

这是由许多不同的浏览器实现的,因为网页会向用户发出警报(或数百个),迫使他们关闭每一个,直到您可以关闭窗口(或者您ctrl+ alt+del并关闭浏览器)- -看看你决定

作为使用咆哮/吐司消息或某种形式的对话框(如 jQuery-UI 对话框)的替代外观。此外,alert()按照今天的标准,使用 是一种过时的提示用户的方式(考虑到可用的其他选项过多)。

于 2013-07-30T20:06:30.220 回答
6

不。

您无法阻止用户停止显示警报。

警报非常烦人:

  • 他们无论如何都会流行并窃取焦点
  • 他们停止你在页面上所做的任何事情

警报属​​于浏览器而不是网站。同样,避免prompts 和confirms (确认有一个合法的用例)。

此外,只是为了证明这一点 - 从用户态 JavaScript 是不可能的。为了证明这一点,让我们检查负责的源代码

里面void WebContentsImpl::RunJavaScriptMessage

if (suppress_this_message) {
    // If we are suppressing messages, just reply as if the user immediately
    // pressed "Cancel".
    OnDialogClosed(rvh, reply_msg, false, string16());
}

当您单击复选框时,依次suppress_this_message被设置为“真”。

可以做什么?

考虑改用模态。他们在设计方面做得更好。

模态是:

  • 页面内
  • 不要阻止执行
  • 让您控制他们如何看待浏览器的完整性和跨浏览器、关闭方式以及与页面交互的方式。

但是怎么做?

  • 创建具有固定位置的元素(cssposition:fixed或使用 JavaScript with position:absolute
  • 将其显示设置为隐藏,并将其设置为类似于“警报”窗口的样式,仅使用适合该站点的样式。
  • 单击按钮时显示它,您可能也希望使屏幕的某些部分变暗。
  • 当用户单击关闭时,将其显示 css 属性设置为隐藏。

许多流行的框架,如 jQueryUI都带有modals 。

于 2013-07-30T20:06:45.370 回答
4

您不能禁用此行为。如果用户看到您的所有通知至关重要,请不要使用 alert(),而是使用模式窗口。

于 2013-07-30T20:06:53.860 回答
3

您不能阻止用户禁用它,而是考虑使用类似http://jqueryui.com/dialog/#modal-message

jQueryUI 包含在 .net MVC4 模板中:D

于 2013-07-30T20:06:58.220 回答
2

您无法阻止该复选框出现。这是浏览器中实现的一项功能,用户可以在站点过度使用警报时选择阻止警报。您也无法阻止用户选中该框,但如果您的消息对他们足够重要,他们肯定不会。

您应该考虑使用模态窗口,因为您可以随意设置它们的样式,并且它们不会阻止脚本/锁定该选项卡上的浏览器。

于 2013-07-30T20:06:45.987 回答
1

您不应该使用警报来向您的用户显示重要消息。而是在网页本身内显示消息。有许多插件、库等可以帮助您解决这个问题。一个例子是 Bootstrap http://getbootstrap.com/components/#alerts-default

于 2013-07-30T20:08:15.260 回答