2011-04-06 12 views
12

क्या जावास्क्रिप्ट में alert("") और confirm("") ओवरराइड करने का कोई तरीका है?जावास्क्रिप्ट में चेतावनी ओवरराइड करें और पुष्टि करें

मैं jQuery का उपयोग करता हूं, इसलिए यदि इस ढांचे में ऐसा करने का कोई तरीका है, तो मैं इसकी सराहना करता हूं।

मैं की तरह सामान करना चाहते हैं:

override alert(msg){ 
    //Show custom stuff here 
} 

override confirm(msg){ 
    //Show custom stuff here. 
    return watever; 
} 

उत्तर

27

हाँ और नहीं। आप बस उन्हें जगह ले सकता है:

if(confirm('Do Something?')){ 
    // do stuff 
} 
:

window.alert = function(msg){ 
    // stuff 
} 

लेकिन आप उस चेतावनी अवरुद्ध कार्यक्षमता प्राप्त और दे आप पुष्टि करने के लिए नहीं जा रहे हैं, यानी कोई रास्ता नहीं काम करने के लिए इस कोड प्राप्त करने के लिए किया जाएगा

आप इन चीजों को बदलने की कोशिश कर रहे हैं, आप समान काम करने के लिए अन्य कार्यों को बनाने से आम तौर पर बेहतर होते हैं।

+4

+1 उल्लेख करने के लिए कि उनके पास समान अवरोधन कार्रवाई नहीं होगी। – alex

+0

तो इसका मतलब है कि अलर्ट अभी भी आ जाएगा? –

+0

मैं इसे खुद को वोट दे रहा हूं, अवरुद्ध करने के बारे में अच्छी बात! – ctcherry

3

बस इसे फिर से परिभाषित:

window.alert = function(msg) { console.log(msg); } 
+1

लॉल, क्या हर शानदार व्यक्ति इस तरह बोलता है? अगर मैं किसी मित्र से कुछ पूछता हूं "ओह, बस ऐसा करें, सरल सामान"। मदद के लिए धन्यवाद :) –

+0

लॉल, इसका मतलब यह नहीं था कि इस तरह से आवाज है :) – ctcherry

+1

lol, एक lvl 40k आदमी ने वही बात कहा। –

1

बस alert या confirm नाम के एक समारोह को परिभाषित।

function alert(){}; function confirm(){}; 

हालांकि, अगर आप मूल कार्यों के संदर्भ में की जरूरत है तो आप या var oldAlert लगा कर उन के लिए संदर्भ बचाने चाहिए सिर्फ alert एक और समारोह के अंदर, तो window.alert रहता अछूता परिभाषित करते हैं।

(function() { 
    function alert(){}; // alert inside of this scope is your custom function 
})(); 
+0

या आप window.alert और संदर्भ 'window.constructor.prototype.alert' को प्रतिस्थापित कर सकते हैं: पी –

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