在IE8 / 9中完成函数之前,JQuery不会执行(使用调试器函数)

时间:2013-02-12 18:39:30

标签: jquery internet-explorer-8 jquery-ui-dialog javascript-debugger

会发生什么:我在IE中有一个onclick元素。比以前的编辑更简单(稍微削减一点)。

(css file)#dialog-modal{display:none;height:50px;width:50px;background-color:#000;}(/css)

<div id="dialog-modal" title="sample">xml data</div>
<button type="Button" onClick="makeBox();">Hello</button>


function makeBox(){
    debugger;
    $('#dialog-modal').show();
    debugger;
    console.log($('#dialog-modal').css('display'));
    console.log('hasnt shown');
    debugger;
    console.log($('#dialog-modal').css('display'));
    console.log('still hasnt shown');
    debugger;
    return false;
}

当你执行MakeBox onClick时,它直到函数的最后才执行show,理论上它应该在执行时执行,对吗?

问题是什么,更大,更烦人的问题是,当我使用onClick,或bind,或jquery或任何其他方法来实现这一点时,它总是解决&amp;显示在函数堆栈的最后...我有一个相当大的函数堆栈,它在打开时试图解决,但它不是UI-Dialog的问题(我最初认为是问题),它似乎问题更多的是在执行完成之前取消隐藏框的能力。

我的意思是,从概念上讲,还有另一种方法可以做到这一点,但是我点击某些东西,无论我是否使用jq-queue或callbacks,或者在IE8&amp;中绑定,点击,mousedowns。 9(我假设7),如果IE中的调试器与Chrome中的调试器相同(这可能完全是可能的,但我找不到该信息),那么唯一的可能性是IE存储dom操作直到功能堆栈清除,然后将它们射出。

我的目标是:点击某些内容。首先打开Box,显示加载对话框。扼杀一些愚蠢的数字。以愚蠢的数字插入数据。

强制性的JSFiddle:http://jsfiddle.net/5A4Nq/31/

同样小提琴,使用JQDialog&amp;打开回调(http://jsfiddle.net/5A4Nq/36/

确保您已打开IE Developer Tools&amp;在脚本工具中开始调试。

版本:JQ-1.7.2

1 个答案:

答案 0 :(得分:0)

在向JQuery核心团队投掷骨头之后,我最终确定在IE8中使用调试器的时机只是......糟糕。

IE8确实从未在调试器运行时完成dom操作任务,直到整个堆栈完成。有点奇怪。这很尴尬,这是我们对Internet Explorer的期待。