2011-10-18 16 views
38

Jestem po prostu ciekawy, aby wiedzieć
Czy istnieje JAKIKAAJA droga w JAKIEJKOLWIEK przeglądarce, aby dowiedzieć się, skąd pochodzi zgłoszenie, które otrzymuję?Jak dowiedzieć się, skąd pochodzi alert?

Próbowałem go w chrome, ale nie ma stosu wywołań dostępnych, gdy pokazuje alert.

Każdy pomysł?

+3

Może być powiązany: http://stackoverflow.com/questions/3638249/debug-js-code-which-triggers-an-alert –

Odpowiedz

79

Można nadpisać alert i utwórz Error do śledzenia stosu:

var old = alert; 

alert = function() { 
    console.log(new Error().stack); 
    old.apply(window, arguments); 
}; 
+0

Dziękujemy! Nigdy nie sądziłem, że alarm jest członkiem okna! –

+0

Przydaje się również możliwość zastąpienia instrukcji console.log instrukcją debuggera, dzięki czemu zostaniesz przeniesiony do debuggera w miejscu, w którym wywołano alert. –

+0

Nie mogę ci wystarczająco podziękować za to. Mam starą stronę z wieloma problemami. Jednym z nich był XSS w każdym miejscu. więc ustawiam jedną wartość na alert " 'Wtedy był koszmar, aby zlokalizować wszystkie miejsca, które sznur został oceniony, i pojawiały się alarmy. Twoja odpowiedź była bardzo pomocna. Teraz pozwól mi wstrzymać oddech i wracaj do tego szamba. – Sharky

4

Można monkeypatch alert, aby to zrobić:

//put this at the very top of your page: 
window.alert = function() { throw("alert called") } 
4

Jak o owijania alert?

window.original_alert = alert; 
alert = function (text) { 
    // check the stack trace here 
    do_some_debugging_or_whatever(); 

    // call the original function 
    original_alert(text); 
} 

Powinno to być przeglądarka.

Powiązane problemy