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
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
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);
}
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
@deadalnix, które nie zadziała, zobacz mój komentarz do twojego posta –
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
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. –
Masz rację! Edytowałem swoją odpowiedź. Znajdziemy dla nas wspaniałą odpowiedź;) – deadalnix
To jest miłe. +1 –