搜索

首页  >  问答  >  正文

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

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

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

黄舟黄舟2896 天前863

全部回复(3)我来回复

  • 天蓬老师

    天蓬老师2017-04-10 12:44:15

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-10 12:44:15

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

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

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

    // 假设有三个对象confirmFrame, btnOk, btnCancel
    // 为了方便假设他们都是jquery对象
    btnOk.click(function() {
        // 处理点击ok的逻辑
    });
    
    btnCancel.click(function() {
        // dismiss掉对话框
        confirmFrame.hide();
        // 如果用了阴影层,也影藏掉
        shadow.hide();
    })

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

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-10 12:44:15

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

    回复
    0
  • 取消回复