2011-04-06 17 views
12

有沒有辦法在JavaScript中覆蓋alert("")confirm("")覆寫提醒並使用Javascript進行確認

我使用jQuery,所以如果在這個框架中有辦法做到這一點,我會很感激。

我想要做的東西,如:

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

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

回答

27

是,否。你可以簡單地替換它們:

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

,但你不會得到阻斷功能,警報和確認給你,即不會有任何的方式來獲得此代碼工作:

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

通常,您最好使其他功能執行類似的操作,而不是嘗試替換它們。

+4

+1,因爲它們不會有相同的阻止操作。 – alex 2011-04-06 01:03:16

+0

那麼這意味着警報仍會出現? – 2011-04-06 01:05:29

+0

我對這一個自己投了票,關於攔截的好點! – ctcherry 2011-04-06 01:05:32

3

只需重新定義它:

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

哈哈,難道每個輝煌的人都會這樣說嗎?如果我問一個朋友「哦,就這麼做,簡單的東西」。感謝您的幫助:) – 2011-04-06 01:01:25

+0

大聲笑,並不意味着它的聲音:) – ctcherry 2011-04-06 01:02:11

+1

大聲笑,一個lvl 40k的傢伙說同樣的事情。 – 2011-04-06 01:03:28

1

只是定義了一個名爲alertconfirm功能。

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':P – 2011-04-06 01:10:33