Internet Explorer'da konsol günlüğünü nasıl kullanabilirim?


119

IE için bir konsol kaydedici var mı? Konsola bir dizi test / iddia kaydetmeye çalışıyorum ancak bunu IE'de yapamıyorum.


8
dikkat et! console.log()yalnızca IE'nin geliştirme aracı açıkken çalışır (evet, IE berbattır). bakınız stackoverflow.com/questions/7742781/…
Adrien Be

1
tarayıcılar arası sarmalayıcıyı kullanın: github.com/MichaelZelensky/log.js
Michael Zelensky

Yanıtlar:


147

"Geliştirici Araçları" nı (F12) başlatarak IE8 komut dosyası konsoluna erişebilirsiniz. "Komut Dosyası" sekmesini ve ardından sağdaki "Konsol" u tıklayın.

JavaScript kodunuzun içinden aşağıdakilerden herhangi birini yapabilirsiniz:

<script type="text/javascript">
    console.log('some msg');
    console.info('information');
    console.warn('some warning');
    console.error('some error');
    console.assert(false, 'YOU FAIL');
</script>

Ayrıca, arayarak Konsolu temizleyebilirsiniz. console.clear() .

NOT: Görünüşe göre, bunun çalışması için önce Geliştirici Araçlarını başlatmanız, ardından sayfanızı yenilemeniz gerekir.


Bu yalnızca IE8 + içindir, ancak çok iyi bir konsol. Temelde Firebug'ın bir kopyası, diğer bazı özelliklerin atıldığı birkaç özelliği eksik. Bunun için MSDN'de arayın.
ken

2
Ah, Firebug'ın gerisinde kalsa da, hala ihtiyacım olan şeyden yeterince var. Teşekkürler!
ground5hark


73
Geliştirici araçları etkin değilse IE, Firefox aksine, window.console tanımsız ve aradığını Lütfen not olduğunu console.log()kıracak. Çağrılarınızı her zaman ile koruyunwindow.console && console.log('stuff');
Guss

1
Hala kimse bulamıyorsa, benim yaptığımı yapmayın ve komut dosyanızı pencerenin üst kısmına yazmaya çalışın: Giriş alanı aslında Geliştirici Araçları Konsolu penceresinin altındaki bir metin alanı / çubuğudur .
starmandeluxe

24

Sürüm 8'den bu yana, Internet Explorer diğer tarayıcılar gibi kendi konsoluna sahiptir. Bununla birlikte, konsol etkin değilse, consolenesne mevcut değildir ve bir çağrı console.logbir hata verir.

Diğer bir seçenek de , IE> = 5 dahil olmak üzere tüm ana tarayıcılarda çalışan kendi günlükleme konsoluna sahip log4javascript (tam açıklama: benim tarafımdan yazılmıştır) ve ayrıca tarayıcının kendi konsolu için tanımsız bir sorunu ortadan kaldıran bir sarmalayıcı kullanmaktır console.


Hah .. Birkaç ay benzer bir şey yazdım. İyi iş çıkardın!
tftd

@Tim Down bunun için bir çözüm var stackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

Üretimde console.log () kullanılıyorsa son derece önemlidir:

Eğer console.log()üretim için komutları yayınlamayı bitirirseniz, IE için bir çeşit düzeltme yapmanız gerekir - çünkü consolesadece F12hata ayıklama modunda tanımlanır .

if (typeof console == "undefined") {
    this.console = { log: function (msg) { alert(msg); } };
}

[uyarıyı açıkça kaldırın (msg); çalıştığını doğruladıktan sonra ifade]

Diğer çözümler ve daha fazla ayrıntı için ayrıca bkz. 'Konsol' Internet Explorer için tanımsız bir hata



5

Diğer tarayıcılar için Satır Numaralandırmayı koruyan basit IE7 ve altı şim:

/* console shim*/
(function () {
    var f = function () {};
    if (!window.console) {
        window.console = {
            log:f, info:f, warn:f, debug:f, error:f
        };
    }
}());

3

John Resig (jQuery'nin yaratıcısı) "Secrets of Javascript Ninja" adlı kitabında, tarayıcılar arası console.log sorunlarını çözecek gerçekten basit bir koda sahiptir. Tüm tarayıcılarla çalışan bir günlük mesajına sahip olmak istediğini ve bunu şu şekilde kodladığını açıklıyor:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}

John Resig; "istifa" yazdın, LOL
rvighne

1
}Bu pasajda bir eksiklik var . :)
Nighto

2

IE8 veya konsol desteği için console.log ile sınırlıdır (hata ayıklama, izleme, ... yok) şunları yapabilirsiniz:

  • Console VEYA console.log tanımsız ise: Konsol fonksiyonları için sahte fonksiyonlar oluşturun (izleme, hata ayıklama, günlük, ...)

    window.console = { debug : function() {}, ...};

  • Aksi takdirde, console.log tanımlanırsa (IE8) VE console.debug (başka herhangi biri) tanımlanmazsa: tüm günlük işlevlerini console.log'a yönlendirin, bu, bu günlüklerin tutulmasına izin verir!

    window.console = { debug : window.console.log, ...};

Çeşitli IE sürümlerindeki assert desteğinden emin değilim, ancak her türlü öneriye açığız.



0

IE'nin eski sürümü için (IE8'den önce), IE Developer Toolbar'da konsol günlüğünü görmek kolay değildir, saatler boyunca araştırma yaptıktan ve birçok farklı çözümü denedikten sonra, son olarak aşağıdaki araç çubuğu benim için harika bir araçtır:

Bunun ana avantajı, IE6 veya IE7 için bir konsol sağlamaktır, böylece hatanın ne olduğunu görebilirsiniz (konsol günlüğünde)

  • Not:
  • Ücretsizdir
  • araç çubuğunun ekran görüntüsü

görüntü açıklamasını buraya girin


0

Ben hep böyle bir şey yapıyordum:

var log = (function () {
  try {
    return console.log;
  }
  catch (e) {
    return function () {};
  }
}());

ve bu noktadan sonra her zaman log (...) kullanın, konsolu kullanmaktan çok hoşlanmayın. [warn | error | vb.], sadece basit tutun. Genellikle basit çözümü tercih ederim, sonra harici kitaplıkları tercih ederim, genellikle karşılığını verir.

IE ile ilgili sorunları önlemenin basit yolu (mevcut olmayan console.log ile)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.