SORU
16 Aralık 2010, PERŞEMBE


Internet Explorer içinde çalışan uzun komut iletisini devre dışı bırakma

Bir çok kez yineleme döngü içeren bir JavaScript fonksiyonu var.
Bu fonksiyon çağrıldıktan sonra, IE tarayıcı bu iletiyi görüntüler:

Bu komut çalışmamaya?
Bu sayfadaki bir komut dosyası web tarayıcınızı yavaş çalışmasına neden oluyor. Eğer çalıştırmak için devam ederse, bilgisayarınız yanıt veremez hale gelebilir.

Bu durumu nasıl düzeltebilirim?
YANİ, ben bu mesajı devre dışı zaten var mı?

CEVAP
16 Aralık 2010, PERŞEMBE


Bu ileti İnternet Explorer JavaScript bir parça için senkron talimatları sayısını ulaştığında görüntüler. Varsayılan maksimum editing the registry tek bir makine üzerinde bu sayı artabilir 5,000,000 talimatları.

Internet Explorer şimdi parça toplam sayısı çalıştırılan komut açıklamaları ve sıfırlar değerini her zaman yeni bir komut dosyası yürütme başlamış gibi bir zaman aşımı ya da bir olay işleyicisi için geçerli sayfa ile betik motoru. Internet Explorer görüntüler bir "uzun süre çalışan script değer bir eşik miktarının üzerinde olduğunda," iletişim kutusu.

Tek yolu, sorunu çözmek için tüm kullanıcılar olabilir görüntülediğiniz sayfa parçalamaya sayıda yineleme döngü gerçekleştirir kullanarak zamanlayıcılar, ya da yeniden kodunuzu böylece gerekmez işlemi gibi birçok talimatlar.

Zamanlayıcılar ile bir döngü kesiliyor nispeten basittir:

var i=0;
(function () {
    for (; i < 6000000; i  ) {
        /*
            Normal processing here
        */

        // Every 100,000 iterations, take a break
        if ( i > 0 && i % 100000 == 0) {
            // Manually increment `i` because we break
            i  ;
            // Set a timer for the next iteration 
            window.setTimeout(arguments.callee);
            break;
        }
    }
})();

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Good Creative Academy

    Good Creativ

    19 Kasım 2009
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010
  • TechSmartt

    TechSmartt

    29 Aralık 2010