模仿Javascript'警报'阻止性质

los*_*rce 19 javascript alert

是否有可能创建一个自定义模态消息,"阻止"脚本执行直到用户输入?

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

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

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

Jef*_*eff 9

是否有可能创建一个自定义模态消息,"阻止"脚本执行直到用户输入?

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

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

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

您不能使用该代码你说什么它甚至会原生窗口报警/提示功能(见这个小提琴 -关闭弹出之前等待4秒).你需要以下内容:

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

在没有原生弹出窗口的情况下,您无法实现哪些功能(确切地说 - 参见上面的灯箱).

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