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

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

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


慕容森
浏览 105回答 2
2回答

皈依舞

理想很丰满,现实很残酷,alert,confirm是系统级别的,自己用javascript些的dialog只能用回调函数来做,也就是把暂停后面的代码放入确定或者取消或者关闭之后的回调函数来执行,实际上是一样的,或者使用定时器(不过这应该很搓),如<script>var&nbsp;alert_ok&nbsp;=&nbsp;false;function&nbsp;myalert(){//这个是自定义的alert实现省略alert_ok&nbsp;=&nbsp;true;&nbsp;//如果点击确定则将alert_ok赋值true}//然后轮询setInterval(function(){&nbsp;&nbsp;&nbsp;&nbsp;if(alert_ok){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这里做你要做的事情 &nbsp;&nbsp;&nbsp;&nbsp;} },10)</script>上面的例子很烂,仅仅说明一点JS只能回调,应该不太可能暂停

缥缈止盈

对你的问题我只能说:深表遗憾不过要达成你的目的是有很多更好的方法的。你可以自己创建一个对话框,然后在对话框的确定和取消按钮上加click事件://&nbsp;假设有三个对象confirmFrame,&nbsp;btnOk,&nbsp;btnCancel//&nbsp;为了方便假设他们都是jquery对象 btnOk.click(function()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;处理点击ok的逻辑 }); btnCancel.click(function()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;dismiss掉对话框 &nbsp;&nbsp;&nbsp;&nbsp;confirmFrame.hide();&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果用了阴影层,也影藏掉 &nbsp;&nbsp;&nbsp;&nbsp;shadow.hide(); })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript