Jqueryui对话框(“关闭”)结束当前的javascript线程

时间:2012-08-09 02:08:18

标签: javascript jquery html jquery-ui

您好我关闭了我的jquery对话框。 我所拥有的是一个向我的浏览器发送消息的彗星连接。我想要做的是当我收到一条消息时,我想要做一些事情,关闭对话框,然后做更多的事情。不幸的是,当我执行:$('#dialog')。dialog(“close”);它结束了我当前的javascript代码。有办法避免这种情况吗?或者我是否需要确保使用变量在最后运行关闭?

例如,您可以在此处看到我的文字在以下情况下不会更改: http://jsfiddle.net/hKhMC/

这是一个简单的演示,我的实际代码后来做了很多计算,所以我想知道是否有一个解决方案不涉及在结束前移动文本。

2 个答案:

答案 0 :(得分:4)

您以递归方式触发对话框关闭事件。在Chrome中,您的jsfiddle示例会导致Uncaught RangeError: Maximum call stack size exceeded。这是因为.dialog('close')方法在关闭对话框后触发dialogclose事件。当有人单击对话框工具栏上的X按钮或按下ESC键时,也会触发此事件。

但是,您在对话框初始化期间绑定此事件,然后调用可以再次触发它的相同方法。

答案 1 :(得分:1)

所以我找到了解决问题的方法。

以下是用于创建JQueryUI对话框的代码

$('#currentCallDialog').dialog({
    autoOpen : false,
    height : 350,
    width : 550,
    modal : true,
    buttons : {
        "Open" : function() {
            //.. Do something
        }
    },
    close : function() {
        $(this).dialog("close");
    }
});

问题出在关闭按钮我尝试调用对话框(“关闭”);一旦删除它一切正常,请参阅下面的代码作为工作示例:

$('#currentCallDialog').dialog({
    autoOpen : false,
    height : 350,
    width : 550,
    modal : true,
    buttons : {
        "Open" : function() {
            //.. Do something
        }
    },
    close : function() {
        //.. Do something
    }
});