是否可以创建一个自定义模式消息,在用户输入之前“阻止”脚本的执行?
例如,如何在不使用本机窗口警报/提示功能的情况下实现此目的?
setInterval(function(){
alert('Click OK to Continue'); // timing stops until user hits ok
},4000);
我知道您可以让自定义对话框调用用户输入的回调函数,但我有兴趣能够强制执行此阻止行为
答案 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;