Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
只有在internet explorer中使用alert()和AJAX时,Javascript才会更新UI_Javascript_Ajax_Internet Explorer_User Interface - Fatal编程技术网

只有在internet explorer中使用alert()和AJAX时,Javascript才会更新UI

只有在internet explorer中使用alert()和AJAX时,Javascript才会更新UI,javascript,ajax,internet-explorer,user-interface,Javascript,Ajax,Internet Explorer,User Interface,我在Internet Explorer中遇到了一个问题,它在Firefox中运行良好 我有一个java脚本函数,用于更新在AJAX函数之前调用的UI(屏幕内容)。但在使用警报框提示之前,它不会更新UI。如果没有警报框,它不会在AJAX功能之前更新UI。它在AJAX函数之后更新UI,即使在AJAX函数之前调用它 如果我使用以下代码,UpdateUI()在AJAX函数调用之前根本不会更新UI,而是在AJAX函数调用之后更新UI。我希望它在AJAX函数调用之前更新UI(实际上,我在AJAX调用之前显示

我在Internet Explorer中遇到了一个问题,它在Firefox中运行良好

我有一个java脚本函数,用于更新在AJAX函数之前调用的UI(屏幕内容)。但在使用警报框提示之前,它不会更新UI。如果没有警报框,它不会在AJAX功能之前更新UI。它在AJAX函数之后更新UI,即使在AJAX函数之前调用它

如果我使用以下代码,UpdateUI()在AJAX函数调用之前根本不会更新UI,而是在AJAX函数调用之后更新UI。我希望它在AJAX函数调用之前更新UI(实际上,我在AJAX调用之前显示一个加载栏)

但是如果我使用下面的代码,UpdateUI()会在调用AJAX函数之前更新UI,但是这个方法包含一个警报提示。我不想使用警报

UpdateUI(); // java script function, it just updates inner HTML of a DIV

alert('hellow');

// AJAX function call here with Async = false

它在Firefox中工作正常,但在InternetExplorer8中则不行。当有一个活动的JS线程时,浏览器通常不会刷新UI。在执行回流之前,它会一直等待,直到从ts事件队列中刷新所有事件。将其视为浏览器必须执行其所有事件的单线程循环

回流通常在某些情况下优先级最低,但是您可以通过请求DOM元素上的某些属性(如getComputedStyle或offsetX/y等)来强制浏览器回流。基本上,任何要求浏览器布局UI以响应的请求都将执行回流

这是我在面临类似问题时找到的最好的文章


我能建议的最简单、最简单的技巧是将代码分成两个方法,然后调用需要在0分钟后的超时中预先回流的方法。这使浏览器在调用method2之前能够进行回流。这与您尝试并发现有效的alert()技巧完全相同。

如果您正在执行同步AJAX调用,浏览器可能会一直阻塞,直到完成为止。这就是同步AJAX调用如此糟糕的原因之一。但是为什么它在FirefoxFirefox中工作得很好呢?我想Firefox是另一种浏览器,它的工作方式与Mozilla用户希望的工作方式不同。对不起,不知怎的错过了您的请求是同步的。检查解释(与@AshwinPrabhu给出的答案非常接近);是的,这是关于jQuery的,但更多的是关于IE7/8的行为。你推荐的任何解决方案,我都尝试过更改许多DOM属性,但都没有成功?兄弟,你能进一步解释一下这一证明foll-proof的技巧吗。事实上,我没有得到这个骗子兄弟。假设要执行两个操作a()和b(),在b()之前先回流。然后这样做:a();setTimeout(函数(){b();},5);如果您需要将state传递给b(),然后将它们作为参数传递给function(),我已经完全按照您所说的做了。但是现在我的函数b();不是executingIt必须是代码中的bug。setTimeout在指定毫秒后执行第一个参数。这太基本了,不可能不起作用。
UpdateUI(); // java script function, it just updates inner HTML of a DIV

alert('hellow');

// AJAX function call here with Async = false