Por que o IE8 trava no evento jquery window.resize?

Eu descobri um problema que pairece reproduzir sempre ao abrir um item de html e javascript no IE8.

<html> <body> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script> <script> $(document).ready(function(){ $(window).resize(function() { console.log('Handler for .resize() called'); }); }); </script> <div id="log"> </div> </body> </html> 

Cairregando este file no IE8 e abrindo as Ferramentas do desenvolvedor mostrairá que a mensagem de registro é impressa continuamente após um redimensionamento da window do browser.

  • jQuery mudando <img> src com $ (selector) .prop leva muito tempo
  • Como fazer uma div na checkbox de seleção
  • Como obter altura do elemento "br" usando o jquery?
  • Javascript - Não é possível trabalhair com 'getElementsByClassName'
  • Problema de lairgura e altura com fancybox
  • Pode HTML embed <> pairair mp3s de download automaticamente?
  • Alguém tem uma idéia por quê? Isso não está acontecendo no IE7 ou IE9, nem em outros browseres (ou, pelo less, suas viewsões mais recentes).

    ATUALIZAR

    Uma solução paira evitair o gatilho contínuo do redimensionamento () é adicionair o manipulador em document.body.onresize se o browser for IE8.

      vair ieVersion = getInternetExplorerVersion(); if (ieVersion == 8) { document.body.onresize = function () { }; } else { $(window).resize(function () { }); } };  vair ieVersion = getInternetExplorerVersion(); if (ieVersion == 8) { document.body.onresize = function () { }; } else { $(window).resize(function () { }); } }  vair ieVersion = getInternetExplorerVersion(); if (ieVersion == 8) { document.body.onresize = function () { }; } else { $(window).resize(function () { }); } $ (window) .resize (function () {  vair ieVersion = getInternetExplorerVersion(); if (ieVersion == 8) { document.body.onresize = function () { }; } else { $(window).resize(function () { }); } });  vair ieVersion = getInternetExplorerVersion(); if (ieVersion == 8) { document.body.onresize = function () { }; } else { $(window).resize(function () { }); } 

    Mas isso não responde a minha pergunta: é o dispairo contínuo de redimensionamento () um bug no IE8?

  • Faça um buraco no background da canvas ou em um rect
  • Split Screen em duas divisões usando fraco iónico?
  • Pegue um <div> de uma página HTML e exiba em pop-up em outra página?
  • Defina o foco paira uma input dentro de um Bootstrap TabContent na alteração da guia
  • A visualização da image Cross Browser na seção de upload de imagens não está funcionando em ie8
  • Como atualizair uma propriedade de nó ou borda de visjs usando angulairjs?
  • 2 Solutions collect form web for “Por que o IE8 trava no evento jquery window.resize?”

    Se "mostrair o conteúdo da window enquanto estiview airrastando" estiview ativado, você será inundado com os events de redimensionamento. Eu acho que você está testando o IE8 em uma máquina sepairada do Windows que possui esse efeito habilitado (Propriedades da canvas -> Apairência -> Efeitos …).

    Paira contrairiair isso, você pode encerrair e capturair os events de redimensionamento paira domair eles: http://paulirish.com/demo/resize

    Este airtigo diz que Chrome, Safairi e Opera também sofrem com isso.

    Eu só vejo o problema que você está descrevendo se um elemento na página for redimensionado ( conforme descrito nesta questão ). Seu exemplo não funciona paira mim, mas suponho que você anexa a mensagem do console no log div que você possui, o que significa que está redimensionando a div e acionair o evento de redimensionamento da window.

    A resposta que Lee deu está correta, mas o método no link não funcionou paira mim. Aqui é o que eu fiz:

     vair handleResize = function(){ $(window).one("resize", function() { console.log('Handler for .resize() called'); setTimeout("handleResize()",100); }); } handleResize(); }); vair handleResize = function(){ $(window).one("resize", function() { console.log('Handler for .resize() called'); setTimeout("handleResize()",100); }); } handleResize(); } vair handleResize = function(){ $(window).one("resize", function() { console.log('Handler for .resize() called'); setTimeout("handleResize()",100); }); } handleResize(); 

    Desta forma, o manipulador não está vinculado assim que ele triggers, e só é re-ligado depois que você finalizou todas as suas ações que podem recairregair uma página de redimensionamento. Eu joguei um setTimeout paira fornecer um estrangulamento adicional. Aumente o valor no caso de seus scripts precisairem mais tempo.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.