javascript中如何自定义实现可暂停脚本的模态(modal)对话框

发布于 2022-08-24 02:45:05 字数 250 浏览 12 评论 0

我问题的关键就是可暂停脚本,也就是在js中把当前脚本hold住,其效果就是alert或者confirm产生的效果,后面的程序都不运行了,只有等到我点击了确定以后才能继续执行。

但是这两个函数弹出的对话框是程序控制样式的,浏览器中能否实现不弹出对话框而暂停后面的函数执行呢?这样我就能实现自己的modal对话框,从而完全不改变原有代码地替换掉原来的confirm

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

碍人泪离人颜 2022-08-31 02:45:05

理想很丰满,现实很残酷,alert,confirm是系统级别的,自己用javascript些的dialog只能用回调函数来做,也就是把暂停后面的代码放入确定或者取消或者关闭之后的回调函数来执行,实际上是一样的,或者使用定时器(不过这应该很搓),如

<script>
var alert_ok = false;
function myalert(){
//这个是自定义的alert实现省略
alert_ok = true; //如果点击确定则将alert_ok赋值true
}
//然后轮询
setInterval(function(){
    if(alert_ok){
        //这里做你要做的事情
    }
},10)

</script>

上面的例子很烂,仅仅说明一点JS只能回调,应该不太可能暂停

静若繁花 2022-08-31 02:45:05

对你的问题我只能说:深表遗憾

不过要达成你的目的是有很多更好的方法的。

你可以自己创建一个对话框,然后在对话框的确定和取消按钮上加click事件:

// 假设有三个对象confirmFrame, btnOk, btnCancel
// 为了方便假设他们都是jquery对象
btnOk.click(function() {
    // 处理点击ok的逻辑
});

btnCancel.click(function() {
    // dismiss掉对话框
    confirmFrame.hide();
    // 如果用了阴影层,也影藏掉
    shadow.hide();
})

我写过完整的类似这样的消息提示工具库,带阴影,可配置按钮,标题框,主题框,如果你需要我可以发给你参考一下

情深缘浅 2022-08-31 02:45:05

不知道我有没有看懂你的意思,我觉得你需要使用的是showModelDialog()这个函数
http://www.sosuo8.com/article/show.as...
这里面有个小例子,你可以看一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文