SORU
5 Aralık 2009, CUMARTESİ


pencere.Internet Explorer ateşleme olayı yeniden

Internet Explorer, bildiğiniz gibipencere.resize olayı sayfasındaki herhangi bir öğeyi yeniden boyutlandırıldığında kovuldu.Önemi yok, ister sayfa öğesi yeniden boyutlandırıldığında ile atama/değiştirme, yüksekliği ya da stil özelliği ile sadece ekleme bir çocuk eleman, ya da ne olursa olsun -- olsa da elemanın boyutlarını etkilemez boyutları kapısı kendisi.

Uygulamam, bu benim penceresinde beri kötü bir özyineleme neden olur.bazı < boyutlandırma ben işleyicisi yeniden boyutlandırmak;li> yeniden harekete pencere açmak olan unsurlar.yeniden boyutlandırma, vb. Yine, bu İE bir sorun sadece.

Herhangi bir yolu yokturpencere önlemek.sayfayı yeniden boyutlandırılan öğeleri yanıt olarak IE ateş boyutlandır?

Ayrıca jQuery kullanıyorum bahsetmeliyiz.

CEVAP
17 Aralık 2009, PERŞEMBE


Ben sadece size yardımcı olabilecek başka bir sorun keşfetti.

JQuery kullanıyorum ve pencere var.yeniden pozisyon div hangi bir işlevi çağırmak için yeniden boyutlandırmak olay gövdesi için eklenmiş.

Eklenmiş div SOL css özelliği taktım şimdi pencere.resize olayı sebepsiz yere silah kullanmak.

Bu sonsuz bir döngü içinde, pencere tetikliyor sonuçları.yine ve yeniden boyutlandırma.

Düzeltme olmadan kodu:

$(window).resize(function(){
    var onResize = function(){
        //The method which alter some css properties triggers 
        //window.resize again and it ends in an infinite loop
        someMethod();
    }
    window.clearTimeout(resizeTimeout);
    resizeTimeout = window.setTimeout(onResize, 10);
});

Çözüm:

var winWidth = $(window).width(),
    winHeight = $(window).height();

$(window).resize(function(){
    var onResize = function(){
        //The method which alter some css properties triggers 
        //window.resize again and it ends in an infinite loop
        someMethod();
    }

    //New height and width
    var winNewWidth = $(window).width(),
        winNewHeight = $(window).height();

    // compare the new height and width with old one
    if(winWidth!=winNewWidth || winHeight!=winNewHeight){
        window.clearTimeout(resizeTimeout);
        resizeTimeout = window.setTimeout(onResize, 10);
    }
    //Update the width and height
    winWidth = winNewWidth;
    winHeight = winNewHeight;
});

Eğer yükseklik veya genişliği değiştirilirse kontrol edecek yani Kısacası aslında pencere yeniden boyutlandırma SADECE olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B4ROK

    B4ROK

    1 EKİM 2008
  • CaptainDisillusion

    CaptainDisil

    18 EYLÜL 2007
  • Truc Minh

    Truc Minh

    23 Ocak 2011