2011-10-18 22 views
38

मुझे पता है कि
क्या किसी भी ब्राउज़र में यह पता लगाने के लिए कोई तरीका है कि मुझे प्राप्त अलर्ट कहां से उठाया गया है?कैसे पता लगाएं कि अलर्ट कहाँ से उठाया गया है?

मैंने इसे क्रोम में करने की कोशिश की लेकिन अलर्ट शो के दौरान कोई कॉल स्टैक उपलब्ध नहीं है।

कोई विचार?

+3

संबंधित हो सकता है: http://stackoverflow.com/questions/3638249/debug-js-code-which-triggers-an-alert –

उत्तर

79

आप alert के ऊपर लिख सकते हैं, और स्टैक ट्रेस के लिए एक Error बनाएँ:

var old = alert; 

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

धन्यवाद !! मैंने कभी नहीं सोचा कि चेतावनी खिड़की का सदस्य है! –

+0

कंसोल.लॉग स्टेटमेंट को डीबगर कथन के साथ बदलने के लिए भी आसान हो सकता है ताकि आपको उस बिंदु पर डीबगर में गिरा दिया जा सके जहां अलर्ट कहा जाता था। –

+0

मैं इसके लिए आपको धन्यवाद नहीं दे सकता। मुझे कई मुद्दों के साथ पुरानी वेबसाइट मिली है। उनमें से एक जगह पर एक्सएसएस था। इसलिए मैंने एक मान ' 'तब स्ट्रिंग का मूल्यांकन करने वाले सभी स्थानों का पता लगाने के लिए दुःस्वप्न था, और अलर्ट पॉप अप हो रहे थे। आपका जवाब बेहद सहायक था। अब मुझे अपनी सांस पकड़ने दो और उस सेसपूल पर वापस जाने दो। – Sharky

4

आप ऐसा करने के लिए चेतावनी monkeypatch कर सकते हैं:

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

कैसे 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); 
} 

यह क्रॉस-ब्राउज़र होना चाहिए।

संबंधित मुद्दे