谷歌浏览器 - 显示和隐藏元素
Google Chrome browser - show and hide elements
这是我的示例代码(jQuery):
$('#anyElement').click(function() {
$('#progress').show() ;
/**
loading result with ajax
time it about 2 sec.
*/
$('#progress').hide() ;
$('#resultDisplay').show() ; // display result of ajax
}) ;
所有浏览器(不是 Chrome)都可以:
- 任意元素 ->点击
- 进度 ->显示
- 函数返回 ajax 的结果:reqest -> 服务器在 2 秒后响应
- 进度 ->隐藏
- 结果显示 -> 显示 ajax 的结果
但是铬:
- 任意元素 ->点击
- 函数返回 ajax 的结果:reqest -> 服务器在 2 秒后响应
- 结果显示 -> 显示 ajax 的结果
当我为开发人员使用工具并且代码逐步执行时,一切正常。有人可以向我解释一下吗?谢谢。
这是你可以尝试的。
将您的 ajax 调用包装在设置超时中,这样 Chrome 就有时间实际显示进度元素。
setTimeout(function() {
//Code to run your ajax call and hide the progress image.
},250)
这只会增加 1/4 秒的延迟,事实上,您可以尝试并将其降低到更小的延迟,但它返回浏览器的控制权以实际更新向用户显示的元素。
根据您的 ajax 调用及其包装方式,听起来 chrome 不会等待它完成,然后再继续下一行代码。 根据定义,Ajax 调用是异步的,因此 JavaScript 不会等待调用完成才继续。这意味着您的代码正在调用progress.show()
然后ajax
然后progress.hide()
但是由于 ajax 调用是异步的,因此progress.show()
和progress.hide()
彼此相邻调用 - 即,速度如此之快,以至于很难注册它们的效果。
jQuery有一个$.when()
函数,它将等待ajax调用完成,然后再继续下一段代码。
有可能您的 AJAX 调用异步设置为 false 并且进度是 gif 加载器,然后 gif 由于同步调用而在 Chrome 上停止移动。如果是这种情况,则解决方案是不使用同步调用。您可以在 ajax 完成时隐藏进度。
$.ajax({
...
success: function() {
$('#progress').hide() ;
$('#resultDisplay').show() ;
}
});
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 随时隐藏元素
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- 隐藏元素直到加载完成(ng斗篷不是我需要的)
- 在具有类的元素中隐藏元素
- javascript()onclick隐藏元素-dos'我不在firefox工作
- JQueryHide()在按钮中使用元素时不会隐藏元素
- 使用Javascript取消隐藏元素
- 如果鼠标离开父对象,则隐藏元素
- 如何在jquery ajax成功html响应中找到输入隐藏元素
- 基于事件在循环中隐藏元素
- 渐进式增强-不使用CSS隐藏元素
- 隐藏元素后更新滚动条
- jQuery没有隐藏元素
- jQuery隐藏元素在使用CSS显示时保持隐藏状态
- 如何使用javascript在区域外单击时隐藏元素
- 如何在加载网页时隐藏元素
- JS:隐藏元素上的事件侦听器
- HTML 显示/隐藏元素 JS 不起作用