JQuery .show () и эквивалентная модификация CSS не работают с IE 8 - PullRequest
0 голосов
/ 20 октября 2010

Есть несколько постов, связанных с этим, но ни один на самом деле не дает решения.

На самом деле происходит следующее:

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 он работает нормально.

Ответы [ 4 ]

3 голосов
/ 20 октября 2010

Является ли проблема, что вы делаете синхронный вызов 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 секунды просто отлично. Если это не так, игнорируйте этот пост .. Я совершенно не прав.

0 голосов
/ 20 октября 2010

У вас есть конкретный пример?Я не помню, чтобы столкнулся с этой проблемой, хотя я использую show () довольно часто.

0 голосов
/ 20 октября 2010

Я немного отладил его и обнаружил, что Браузер не делал необходимые обновления вовремя.Вот почему к тому времени, когда он должен был быть видимым, был вызван Unloader (), и он снова стал скрытым.

0 голосов
/ 20 октября 2010
$(function() {
  $("#d").hide();
  $('#b').click(function() {
    $('#d').show();
  });
});

<div id="d">hello</div>
<input type="button" id="b" />

отлично работает для меня в IE.

...