2011-06-23 9 views
5

Chcę ustawić detektora dla console.log() i zrobić coś z komunikatem bez blokowania domyślnego zachowania. Tak więc konsola narzędzi programistycznych powinna również otrzymać wiadomość. Jakieś pomysły?Listening console.log

Odpowiedz

8

Nigdy nie próbowałem tego na stronie internetowej, ale działa ona w wtyczce do przeglądarki (gdzie prawa do javascripts nie są takie same ze względów bezpieczeństwa).

Można ostatecznie pójść na coś takiego:

(function(){ 

    var originallog = console.log; 

    console.log = function(txt) { 
     // Do really interesting stuff 
     alert("I'm doing interesting stuff here !"); 

     originallog.apply(console, arguments); 
    } 

})(); 

Najśmieszniejsze jest to, że w javascript funkcja to obiekty TOO: D

+0

Wygląda na to, że 'console.log' nie może działać poza obiektem' console' - może opiera się na zmiennej 'this'. Poza tym nie uważam funkcji za przedmiot za zabawny: to właśnie czyni ten język znakomitym. –

+0

Masz rację! Edytowałem swoją odpowiedź. Znajdziemy dla nas wspaniałą odpowiedź;) – deadalnix

+0

To jest miłe. +1 –

2

Jest to mały hack, ale nie jestem pewien, istnieje jest lepszym rozwiązaniem:

console._log_old = console.log 
console.log = function(msg) { 
    alert(msg); 
    console._log_old(msg); 
} 
+0

Problem z tym rozwiązaniem polega na tym, że ma on efekt uboczny w skali globalnej. Lepszym rozwiązaniem jest przechowywanie pliku console._log_old w zmiennej lokalnej w zamknięciu zamiast w zasięgu globalnym. – deadalnix

+0

@deadalnix, które nie zadziała, zobacz mój komentarz do twojego posta –

+0

Tak, będzie, używając Zastosuj;) Zobacz moją zredagowaną odpowiedź. Dziękuję za dokonanie tego punktu, tak było w poprzedniej wersji i nie zauważyłem tego w pierwszej kolejności. – deadalnix