模仿Javascript'警报'阻止性质

时间:2012-11-29 21:44:03

标签: javascript alert

是否可以创建一个自定义模式消息,在用户输入之前“阻止”脚本的执行?

例如,如何在不使用本机窗口警报/提示功能的情况下实现此目的?

setInterval(function(){ 
     alert('Click OK to Continue');  // timing stops until user hits ok
},4000);

我知道您可以让自定义对话框调用用户输入的回调函数,但我有兴趣能够强制执行此阻止行为

3 个答案:

答案 0 :(得分:10)

  

是否可以创建一个自定义模式消息,在用户输入之前“阻止”脚本的执行?

没有。没有办法像执行弹出窗口那样有效地阻止执行或用户交互(因为使用自定义弹出窗口,用户在技术上总是能够使用开发人员工具来摆脱它)。

然而,正如pst在关于这个问题的评论中说的那样,异步灯箱并不繁琐,并且几乎在阻止用户交互方面与弹出窗口一样有效,所以我建议找一个提供灯箱的库喜欢和运行。

  

例如,如何在不使用本机窗口警报/提示功能的情况下实现此目的?

您无法使用该代码执行您所说的 with 本机窗口警报/提示功能(请参阅this fiddle - 在关闭弹出窗口前等待4秒)。您需要以下内容:

function timeoutFunction() {
    alert('Click OK to Continue');  // timing ACTUALLY stops until user hits ok
    setTimeout(timeoutFunction, 4000);
}
setTimeout(timeoutFunction,4000);

在没有原生弹出窗口的情况下,你无法实现这一点(确切地说 - 参见上面的灯箱)。

即使while(true)循环通常也不会像弹出窗口一样阻塞 - firefox至少有一个“停止脚本”消息,在消息过长之后弹出,我相当肯定其他主流浏览器也是。

答案 1 :(得分:-1)

不,你不能(至少不在浏览器中)。 Javascript API主要是异步的。 alert / prompt是例外情况。但是,使用异步提示和回调并不是很难。

答案 2 :(得分:-2)

有点旧,但万一有帮助,我找到了解决方案:

var answer = confirm("are you sure?"); if(!answer)return;