2012-07-05 14 views
5

Tüm tarayıcılarda iyi çalışan bir JS komut dosyası var. Ama herkes için sürpriz, I.E. ilk denemede çalışmıyor.I.E. JS betiğimde ilk önce, sonra F12 tuşuna basıyorum ve çok iyi çalışıyor

Sayfamı yükledikten sonra, F12 tuşuna basarsam (ör. Hata ayıklayıcısını açar) ve sayfamı yenilediğimde düzgün çalışıyor! Diğerleri tarayıcıları gibi! Ama bu iş için F12'ye basmalıyım.

Yani, hata ayıklayıcısını açtığımızda bir şey yapar mı? Bir çözüm bulamıyorum!

Şimdiden teşekkürler.

+1

olası bir kopyası ['konsol' internet explorer için tanımlanmamış bir hatadır] (http://stackoverflow.com/questions/3326650/console-is-undefined-erro r-for-internet-explorer), [IE9, console.log dosyasını destekliyor mu ve gerçek bir işlev mi?] (http://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and- is-it-a-gerçek fonksiyon) – kapa

cevap

12

düğmesine basana kadar konsol olmadığı için, hata ayıklayıcısını açmadığınızda IE, console.log olarak bir şey olmadığını düşünür ve tanımlanmamış bir işlevi çağırmak için hata verir. F12'ye bastığınızda, konsolu alırsınız ve böylece console.log artık tanımsızdır.

Kodunuzdaki üstündeki bu koyarak geçici bir çözüm bulabilirler:

if (!window.console) window.console = {}; 
if (!window.console.log) window.console.log = function() { }; 

yerine kodundan console.log çıkarmak için düzenleme, bu sadece konsol yoksa tarayıcı hiçbir şey yapacak tanımlanamazlarsa, onları 'hiçbir şey yap' işlevi olarak tanımlayarak.

Js dosya boyutunuzu küçültmek istiyorsanız (özellikle mobil kullanım için önemlidir), sonunda sürüm sürümünüzde ayrıntılı günlük kaydını kaldırmak isteyeceksiniz.

Yalnızca gerekirse saplama yüklemek önceki sonrası bu yenisini post ediyorum

if (!('console' in window)) { 
    var stub = function() { ; }; 
    window.console = { 
     log : stub, 
     info : stub, 
     warn : stub, 
     error : stub, 
     assert : stub 
    }; 
} 

den

+0

harika! çok teşekkür ederim. işe yaradı. Konsol günlüklerimi kaldırdım çünkü onlara gerçekten ihtiyacım yok. –

+0

Bu sorun da beni daha önce yakaladı. '(Typeof (konsol) ==' tanımsız ') konsol = {log: function (text) {}}; 'gibi bir şey ekleyebilirsiniz, ayrıca konsolunuza. – Wernsey

+0

iWerner, bir konsol çalıştırmıyorken bile günlüklere erişebilmek istiyorsanız bu kötü bir fikir değildir. Ben böyle bir şey yaptım çünkü açık bir konsol yoksa, muhtemelen hiçbir şey yapmamak için günlüğe kaydetmeye gerek duymayacağımı düşündüm, bu yüzden onu “hiçbir şey yapmama” fonksiyonu olarak bıraktım. – sylverfyre

2

Komut dosyanızda console.log() gibi bir sey var mi? Bu, F12

+0

işe yaradı! teşekkür ederim! –

+0

Rica ederim! –

2

Genişletilmiş sürümü in için bu soruyu ve kabul edilen cevabını kontrol etmelidir

/** 
* On IE console is not set if not opened and debug doesn't exists 
*/ 
(function() { 
    if (!('console' in window)) { window.console = {}; } 
    var kind = ['log', 'info', 'warn', 'error', 'assert', 'debug']; 
    var stub = function() { ; }; 
    for (var i = 0; i < kind.length; i++) { 
     if (kind[i] in window.console) { continue; } 
     window.console[kind[i]] = stub; 
    } 
})(); 
İlgili konular