为了账号安全,请及时绑定邮箱和手机立即绑定

如下所示,浏览器中能否实现不弹出对话框而暂停后面的函数执行呢?

如下所示,浏览器中能否实现不弹出对话框而暂停后面的函数执行呢?

慕容森 2023-04-13 15:11:20
我问题的关键就是可暂停脚本,也就是在js中把当前脚本hold住,其效果就是alert或者confirm产生的效果,后面的程序都不运行了,只有等到我点击了确定以后才能继续执行。但是这两个函数弹出的对话框是程序控制样式的,浏览器中能否实现不弹出对话框而暂停后面的函数执行呢?这样我就能实现自己的modal对话框,从而完全不改变原有代码地替换掉原来的confirm。
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

理想很丰满,现实很残酷,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只能回调,应该不太可能暂停


查看完整回答
反对 回复 2023-04-17
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

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

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

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

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

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


查看完整回答
反对 回复 2023-04-17
  • 2 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信