jQuery: проблема совместимости IE 7 - $ (окно) .resize событие запуска и блокировки - PullRequest
1 голос
/ 06 августа 2011

Решение:

http://noteslog.com/post/how-to-fix-the-resize-event-in-ie/

Проблема разработки:

У меня проблема совместимости IE7 сJQuery.По сути, то, что должно произойти, - это событие resize, сообщающее двум div-элементам не показываться и изменяющее другое div-значение на видимое.Затем после наступления setTimeout элементы div снова включаются, а другой показанный элемент div не отображается;затем перезагружает страницу.Это прекрасно работает в IE8, IE9, Mozilla, Chrome и Safari.Так что это должно быть что-то актуальное для IE7.Есть предложения и идеи?Я всегда благодарен за все.

<script type="text/javascript">
    $(document).ready(function(){
        $(window).resize(function() {
            $('#res_mainContainer').css({"display":"none"});
                    for ( var h = 1; h < 100; h++)
                             {
                                    $('#CarLot' + h).css({"visibility":"hidden"});
                             } 
            $('#loading').css({"display":"block"});
              var constantResize =  jQuery(window).width() + 'x' + jQuery(window).height();
              $("#WINDOWS_RESOLUTION").text(constantResize);


        setTimeout( function() {
            $('#res_mainContainer').css({"display":"block"});
                    for ( var h = 1; h < 100; h++)
                             {
                                    $('#CarLot' + h).css({"visibility":"visible"});
                             } 
            $('#loading').css({"display":"none"});
            location.reload()
            }, 2000 );

        });
    });
</script>

Старый JavaScript, который использовался при регулировании:

<script type="text/javascript">
var timeoutId;
function throttleResize(fn) {
window.onresize = function () {
    window.clearTimeout(timeoutId);
    timeoutId = window.setTimeout(function () {fn.call();}, 1000);
    document.getElementById("loading").className = "loading-visible";
    document.getElementById('res_mainContainer').style.visibility = 'hidden';
             for ( var h = 1; h < 40; h++)
                 {
                 document.getElementById('Carlot' + h ).style.visibility = 'hidden';
                 } 
    };
}

function doSomething() {
window.location.reload(true);
document.getElementById("loading").className = "loading-invisible";
document.getElementById('res_mainContainer').style.visibility = 'visible';
             for ( var h = 1; h < 40; h++)
                 {
                 document.getElementById('CarLot' + h ).style.visibility = 'visible';
                 }
}

throttleResize(doSomething);

</script>

1 Ответ

1 голос
/ 06 августа 2011

Изменение размера происходит постоянно в IE и в браузерах WebKit, поэтому, когда вы изменяете размер окна, вы потенциально вызываете свой обработчик десятки или сотни раз, поэтому, вероятно, именно поэтому вы видите IE7 (с более медленным движком JS, чем IE8 или любой другой современный браузер) заблокируйте.

Обычно вы хотите ограничить событие изменения размера (вызывайте его реже). Смотрите здесь: http://mbccs.blogspot.com/2007/11/fixing-window-resize-event-in-ie.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...