Jak mogę korzystać z logowania konsoli w programie Internet Explorer?


119

Czy istnieje rejestrator konsoli dla IE? Próbuję zarejestrować kilka testów / potwierdzeń na konsoli, ale nie mogę tego zrobić w IE.


8
Uważaj! console.log()działa tylko wtedy, gdy otwarte jest narzędzie deweloperskie IE (tak, IE jest kiepski). patrz stackoverflow.com/questions/7742781/…
Adrien Be

1
użyj opakowania dla różnych
Michael

Odpowiedzi:


147

Dostęp do konsoli skryptów IE8 można uzyskać, uruchamiając „Narzędzia programistyczne” (F12). Kliknij kartę „Skrypt”, a następnie kliknij opcję „Konsola” po prawej stronie.

Z poziomu kodu JavaScript możesz wykonać jedną z następujących czynności:

<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>

Możesz również wyczyścić konsolę, wywołując console.clear().

UWAGA: Wygląda na to, że musisz najpierw uruchomić Narzędzia programistyczne, a następnie odświeżyć stronę, aby to zadziałało.


To jest tylko dla IE8 +, ale to cholernie dobra konsola. Jest to w zasadzie replika Firebuga, w której brakuje kilku funkcji, a kilka innych zostało wrzuconych. Wyszukaj to w MSDN.
ken

2
Ach, mimo że brakuje mu Firebuga, wciąż ma wystarczająco dużo tego, czego potrzebuję. Dzięki!
ground5hark

1
Link do MSDN
Casebash,

73
Należy pamiętać, że w IE, w przeciwieństwie do Firefoksa, jeśli narzędzia programistyczne nie są aktywne, window.console jest niezdefiniowane i wywołanie console.log()ulegnie awarii. Zawsze chroń swoje połączenia za pomocąwindow.console && console.log('stuff');
Guss

1
Jeśli ktoś nadal nie może go znaleźć, nie rób tego, co zrobiłem i spróbuj wpisać swój skrypt w górnej części okna: obszar wejściowy to w rzeczywistości obszar / pasek tekstowy u dołu okna konsoli narzędzi programistycznych .
starmandeluxe,

24

Od wersji 8 Internet Explorer ma własną konsolę, podobnie jak inne przeglądarki. Jeśli jednak konsola nie jest włączona, consoleobiekt nie istnieje i wywołanie console.logspowoduje zgłoszenie błędu.

Inną opcją jest użycie log4javascript (pełne ujawnienie: napisane przeze mnie), który ma własną konsolę logowania, która działa we wszystkich popularnych przeglądarkach, w tym IE> = 5, plus opakowanie dla własnej konsoli przeglądarki, które pozwala uniknąć problemu niezdefiniowanego console.


Hah .. Kilka miesięcy napisałem coś podobnego. Dobra robota!
tftd

@Tim Down jest obejście tego problemu stackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

Niezwykle ważne, jeśli używasz console.log () w środowisku produkcyjnym:

jeśli w końcu wydasz console.log()polecenia do produkcji, musisz wprowadzić jakąś poprawkę dla IE - ponieważ consolejest ona zdefiniowana tylko w F12trybie debugowania.

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

[oczywiście usuń ostrzeżenie (msg); oświadczenie po zweryfikowaniu, że działa]

Zobacz także „konsola” to niezdefiniowany błąd przeglądarki Internet Explorer, aby uzyskać informacje na temat innych rozwiązań i szczegółowych informacji



5

Prosta podkładka IE7 i niższa, która zachowuje numerację linii dla innych przeglądarek:

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

3

W swojej książce „Secrets of Javascript Ninja” John Resig (twórca jQuery) ma naprawdę prosty kod, który będzie obsługiwał problemy z konsolą.log w różnych przeglądarkach. Wyjaśnia, że ​​chciałby mieć komunikat dziennika, który działa we wszystkich przeglądarkach, a oto jak go zakodował:

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

To John Resig; napisałeś "Resign", LOL
rvighne

1
Jest }brakuje w tym fragmencie. :)
Nighto

2

W przypadku IE8 lub obsługi konsoli ograniczonej do console.log (bez debugowania, śledzenia, ...) możesz wykonać następujące czynności:

  • Jeśli console LUB console.log undefined: Utwórz fikcyjne funkcje dla funkcji konsoli (śledzenie, debugowanie, dziennik, ...)

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

  • W przeciwnym razie, jeśli zdefiniowano console.log (IE8) ORAZ console.debug (jakikolwiek inny) nie jest zdefiniowany: przekieruj wszystkie funkcje logowania do console.log, pozwala to zachować te dzienniki!

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

Nie jestem pewien co do obsługi assert w różnych wersjach IE, ale wszelkie sugestie są mile widziane.



0

W przypadku starszej wersji IE (przed IE8) nie jest łatwo zobaczyć dziennik konsoli w IE Developer Toolbar, po spędzeniu godzin na badaniu i wypróbowaniu wielu różnych rozwiązań, w końcu następujący pasek narzędzi jest dla mnie świetnym narzędziem:

Główną zaletą tego jest zapewnienie konsoli dla IE6 lub IE7, dzięki czemu można zobaczyć jaki jest błąd (w logu konsoli)

  • Uwaga:
  • To jest darmowe
  • zrzut ekranu paska narzędzi

wprowadź opis obrazu tutaj


0

Zawsze robiłem coś takiego:

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

i od tego momentu po prostu zawsze używaj log (...), nie bądź zbyt wyszukany używając konsoli. [ostrzeż | błąd | i tak dalej], po prostu zachowaj prostotę. Zwykle wolę proste rozwiązania niż wyszukane biblioteki zewnętrzne, zazwyczaj się to opłaca.

prosty sposób na uniknięcie problemów z IE (z nieistniejącym console.log)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.