有几个与此相关的帖子,但没有一个真正给出解决方案。
实际发生的情况如下:
function LoadSpinner()
{
$("#divSpinner").css('display','block'); // could have done with .show()
}
function UnloadSpinner()
{
$("#divSpinner").css('display','none'); // could have done with .hide()
}
function OnClickMyButton()
{
LoadSpinner();
AnAjaxCall(); // it's set to async: false, that means the ajax call must finish before execution continues
UnloadSpinner();
}
我尝试注释 UnloadSpinner(),它确实显示在 IE 8 中。是否它发生得太快以至于我看不到它。但我对此不太确定,因为即使对于一些较慢的操作它也不会显示。
不过它在 Firefox 上运行良好。
最佳答案
问题是您正在执行同步 ajax 调用吗?我相信这会卡住浏览器执行任何其他操作,包括重新绘制屏幕以显示微调器。尝试使您的 ajax 调用异步并在回调中隐藏微调器。我敢打赌,这行得通。像这样的事情:
function OnClickMyButton()
{
LoadSpinner();
AnAjaxCall(function() { UnloadSpinner() } );
}
function AnAjaxCall(callback)
{
//do ajax. On complete, call callback. check the web for examples.
}
我敢打赌,这个问题与 jquery 无关,而是与同步 ajax 调用有关。
要测试我的理论,请尝试以下代码:
function OnClickMyButton()
{
LoadSpinner();
setTimeout(function() { UnloadSpinner() }, 2000);
}
我敢打赌,旋转器出现 2 秒就很好了。如果没有,请忽略这篇文章..我完全错了。
关于javascript - JQuery .show() 和等效的 CSS 修改不适用于 IE 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3976815/