回答
這絕對是「支持」。這是你的網頁,你可以隨心所欲地做任何事情。
我已經做到了這一點,不用修改庫而是通過潛入事件來跟蹤分析事件。
使用代理模式:
(function(proxied) {
window.alert = function() {
// do something here
return proxied.apply(this, arguments);
};
})(window.alert);
您還可以繞過原來的函數調用,如果你想要的(代理)
此處瞭解詳情:JQuery Types #Proxy Pattern
絕妙的回答!我完全忘記了那個模式:) – roosteronacid 2009-11-13 15:00:28
沒問題!我也對此分享喬什斯托多拉的觀點,太棒了。 – 2009-11-13 15:03:01
是的。已經提出了他的答案。你的情況更加明確。它帶有一個例子。這總是一個人羣,pleaser :) – roosteronacid 2009-11-13 15:06:08
它確實在firefox和ie8中有效。我看不到有什麼瀏覽器不能工作。這對於javascript的工作原理來說非常重要,即使人們不經常看到它與本機功能一起使用=)
專門針對IE瀏覽器將是IE6的其他人可能會好起來。 – AnthonyWJones 2009-11-13 14:29:40
我認爲每個Javascript實現都會支持這一點,並且不存在任何危險。通常使用HTML/CSS來替換普通的OS風格的警報框更優雅。這樣做意味着您不必更改現有代碼!這是可能的事實使JavaScript真棒。
現代瀏覽器中的所有JavaScript實現都支持覆蓋。
危險很簡單,你可以通過重寫alert()等常用函數來讓其他團隊成員完全瘋狂。
因此,除非您將函數重寫爲可能以某種方式調試或破解現有代碼的工具,否則我認爲沒有理由這樣做。只需創建一個新功能。
當談到js的瀏覽器功能window.alert
是傑出和最知名的,人們不知道誰JS知道alert()
- 放心它在所有的瀏覽器目前使用支持,您的代碼段是以及。然而,我不會覆蓋(這更像是重構而不是覆蓋在OOP意義上)alert()
作爲你的特定用例,因爲當你實際上需要使用alert()
而沒有模板,並且你可能會,我需要另一個非警報功能來做到這一點。
我與壓倒一切的警報經驗()函數是我們曾經用它來「黑客」試用版的JavaScript庫,顯示「請註冊!」通過警報時間的嘮叨屏幕。
我們剛剛定義了我們自己的alert()函數和voila。
這是僅用於測試目的,我們後來又買了完整版,所以沒有什麼不道德的事情在這裏;-)
有在Overring報警功能沒有危險。每個瀏覽器都會支持它。
例如:
// function over riding. Redirecting to Console with Firebug installed.
function alert(message) {
console.info(message);
}
alert('This is an override.');
上拋出異常,如果您的替換是非阻塞的,則可能會有危險。例如,調用alert(「重新加載」)並重新加載網頁的代碼。警報文本可能永遠不會被用戶看到。 – Darien 2014-01-22 23:26:25
雖然大多數瀏覽器都支持覆蓋它,小心你用它做什麼。
由於默認警告框會阻止執行線程,因此一些依賴此行爲的庫可能無法工作(最好)。
你應該是一個好公民,並避免觸及本地API。如果你這樣做,當使用第三方代碼時,你可能會分手。
但是,如果要重新定義在特定環境警報的行爲,你可以用一個匿名函數括起來,就像這樣:
/* new funky alert */
function myFunkyAlert(msg) {
/* here goes your funky alert implementation */
alert("Look ma!\n" + msg);
}
(function(alert) { // anonymous function redefining the "alert"
/* sample code */
alert("Hello World!");
})(myFunkyAlert);
拉吉斯拉夫。
對於IE8可以像這樣重新定義警報()
/**
* Definition of global attached to window properties <br/>
*/
(function() {
nalert = window.alert;
Type = {
native: 'native',
custom: 'custom'
};
})();
/**
* Factory method for calling alert().
* It will be call a native alert() or a custom redefined alert() by a Type param.
* This defeinition need for IE
*/
(function(proxy) {
proxy.alert = function() {
var message = (!arguments[0]) ? 'null': arguments[0];
var type = (!arguments[1]) ? '': arguments[1];
if(type && type == 'native') {
nalert(message);
}
else {
document.write('<h1>I am redefiend alert()<br/>Alert say: '+message+'</h1>');
}
};
})(this);
,並呼籲爲
alert('Hello, hacker!');
nalert('I am native alert');
alert('Hello, user!', Type.custom);
正如在許多其他的答案說,你可以只覆蓋函數
window.alert = null
或
window.alert = function(){}
然而,這並不必然覆蓋在Window
構造函數的原型功能(注意是大寫W
),所以黑客仍然可以鍵入:
Window.prototype.alert.apply(window, ["You were hacked!"]);
因此,您還需要重寫函數:
Window.prototype.alert = null
或
Window.prototype.alert = function(){}
快速黑客,我做尋找到警報s來自,是去控制檯,然後輸入這個
function alert(message) {
console.info(message);
debugger;
}
- 1. 提醒消息後的Javascript重定向
- 2. Javascript提醒問題
- 3. Javascript提醒問題
- 4. 提醒和提示javascript
- 5. Javascript提示提醒並提交值爲
- 6. javascript中的函數提醒
- 7. Javascript分數目標提醒
- 8. JavaScript提醒錯誤消息
- 9. 24小時提醒[JavaScript,Cookies]
- 10. Javascript多個提醒框
- 11. JavaScript提醒不會觸發
- 12. 更改JavaScript提醒按鈕
- 13. JavaScript - 從提醒到功能
- 14. 沒有出現Javascript提醒
- 15. JavaScript提醒在Vb.net類
- 16. JavaScript。提醒字符串
- 17. 錯誤當Response.Write Javascript提醒
- 18. 雙重提醒消息
- 19. 雙重提醒窗口
- 20. 提醒重複事件
- 21. 每月重複提醒IOS
- 22. 在JavaScript中模擬「提醒」或「提示」
- 23. 提醒應用程序 - 重複某個提醒
- 24. 覆寫提醒並使用Javascript進行確認
- 25. 設置重複提醒,每月重複
- 26. 提醒
- 27. Javascript提醒,而不是在PHP郵件腳本中重定向
- 28. 如何在JavaScript中重新加載頁面後顯示提醒?
- 29. 使自定義Android提醒提醒
- 30. 聊天消息提醒,如Gmail提醒
如果你倒票,解釋原因。這可能只是因爲我有一個完全合理的理由來做這件事。 – roosteronacid 2009-11-13 14:31:52
我不明白這裏的倒票。 – 2009-11-13 14:32:43
這不是一個無限循環嗎? – Pool 2009-11-13 14:39:40