是否可以创建一个自定义模式消息,在用户输入之前“阻止”脚本的执行?
例如,如果不使用本机窗口警报/提示功能,如何实现这一点?
setInterval(function(){
alert('Click OK to Continue'); // timing stops until user hits ok
},4000);
我知道您可以让您的自定义对话框在用户输入时调用回调函数,但我有兴趣能够强制执行这种阻塞行为
是否可以创建一个自定义模式消息,在用户输入之前“阻止”脚本的执行?
例如,如果不使用本机窗口警报/提示功能,如何实现这一点?
setInterval(function(){
alert('Click OK to Continue'); // timing stops until user hits ok
},4000);
我知道您可以让您的自定义对话框在用户输入时调用回调函数,但我有兴趣能够强制执行这种阻塞行为
是否可以创建一个自定义模式消息,在用户输入之前“阻止”脚本的执行?
不。没有办法像原生弹出窗口那样有效地阻止执行或用户交互(因为使用自定义弹出窗口,用户在技术上总是能够使用开发人员工具摆脱它)。
但是,正如 pst 在对该问题的评论中所说,异步灯箱并不繁琐,并且在阻止用户交互方面几乎与弹出窗口一样有效,因此我建议找到一个提供您喜欢的灯箱并与之一起运行的库。
例如,如果不使用本机窗口警报/提示功能,如何实现这一点?
即使使用本机窗口警报/提示功能,您也无法使用该代码执行您所说的操作(请参阅此小提琴- 在关闭弹出窗口之前等待 4 秒)。您需要以下内容:
function timeoutFunction() {
alert('Click OK to Continue'); // timing ACTUALLY stops until user hits ok
setTimeout(timeoutFunction, 4000);
}
setTimeout(timeoutFunction,4000);
如果没有原生弹出窗口,这是您无法实现的(准确地说 - 参见上面的灯箱)。
甚至while(true)
循环通常不会像弹出窗口那样阻塞 - Firefox 至少有一个“停止脚本”消息,在它运行时间过长后会弹出,我相当确定其他主要浏览器也会这样做。
不,你不能(至少不能在浏览器中)。Javascript API 大多是异步的。alert
/prompt
是例外。但是,使用异步提示和回调并不难。
有点旧,但如果它有帮助,我已经找到了我的解决方案:
var answer = confirm("are you sure?");
if(!answer)return;