回答
在覆蓋原始的alert
之前,請保存它。
var origAlert = alert;
alert = 0;
origAlert("foo");
演示:http://jsfiddle.net/jfriend00/tnNE7/
如果不能保存原來的價值,我所知道的唯一的其他方式來訪問它是在iframe。這裏有一個例子:
alert = 0;
var iframe = document.createElement("iframe");
iframe.height = 0;
iframe.width = 0;
document.body.appendChild(iframe);
iframe.contentWindow.alert.call(window, "foo");
工作例如:http://jsfiddle.net/jfriend00/waMEV/
我還沒有在所有的瀏覽器嘗試這樣做,但它在Chrome,IE和Firefox的作品,我認爲它應該在其他瀏覽器。
好吧,我是第一個承認這是一個醜陋的答案,但它似乎工作:
alert = 0;
var win = window.open(),
method = win.alert;
win.close();
method.call(window, "my message");
Fiddle here.從本質上講,你犯了一個新的窗口實例並竊取其alert
方法。缺點是你實際上不得不打開一個新的瀏覽器窗口,儘管很簡單。我懷疑這實際上是對您的問題的實際解決方案 - 取決於您嘗試使用的其他網站,以及您關心解決方案對最終用戶的看法。
編輯:這是上述答案和jfriend00的答案的組合,它解決了「打開新窗口」的問題。我認爲這是一個更好的選擇,因爲a)當你需要調用該方法時,它不依賴於仍在DOM中的iframe,並且b)它應該可推廣到任何window
方法,jfriend00的答案可能不是「T。
alert = 0;
// make a new window instance in an iframe
var iframe = document.createElement("iframe");
iframe.height = iframe.width = 0;
document.body.appendChild(iframe);
// steal the method
var method = iframe.contentWindow.alert;
// remove the evidence
document.body.removeChild(iframe);
// now use the method for your own purposes
function myAlert(message) {
method.call(window, message);
}
myAlert("foo");
爲什麼你把'this'設置爲'window'而不是'win'是'win''''''' alert? – icktoofay 2012-08-04 06:10:56
我已經關閉了'win',所以它無法工作。 – nrabinowitz 2012-08-04 06:14:01
如何從新創建的iframe中竊取fn?結果將是相同的,只是你不會彈出一個新窗口 – 2012-08-04 06:16:27
- 1. 重寫功能,因此它可以在舊的瀏覽器
- 2. 準備好的功能在safari瀏覽器上未被調用
- 3. 重寫瀏覽器
- 4. jquery點擊功能不重置在瀏覽器調整大小
- 5. PS3瀏覽器功能
- 6. Tinymce 4 file_browser_callback:打開本地文件瀏覽器的功能
- 7. Ajax調用被瀏覽器取消
- 8. 在瀏覽器中禁用鍵功能
- 9. OSX的Silverlight瀏覽器應用功能
- 10. 本地存儲瀏覽器
- 11. 瀏覽器等待ajax調用完成,即使中止已被調用(jQuery)
- 12. C功能已被棄用
- 13. Safari瀏覽器重新導航後禁用滾動功能9.1.2
- 14. 僅在瀏覽器完全重定向後才調用該功能?
- 15. 調用瀏覽器的Javascript功能關閉
- 16. 新手:掛在功能調用瀏覽器
- 17. 在點擊瀏覽器標籤上調用js功能
- 18. 如何從j2me應用程序調用本地瀏覽器
- 19. 是否有可能重寫本機提取api使用所需的Promise庫而不是本地瀏覽器Promise?
- 20. 使用瀏覽器的「BACK」功能觸發腳本(js或jQuery)
- 21. 瀏覽器說功能沒有定義(但它是)
- 22. 瀏覽器檢測與功能檢測
- 23. 默認瀏覽器的拖動功能
- 24. SWT瀏覽器WEBKIT的高級功能
- 25. 如何檢測瀏覽器功能?
- 26. Rails 3,瀏覽器後臺功能
- 27. C#瀏覽器搜索功能(編輯)
- 28. 瀏覽器檢測contenteditable功能
- 29. 覆蓋瀏覽器「查找」功能
- 30. Silverlight 3.0以外的瀏覽器功能
如果是有用的Javascript確認對話框可用於顯示消息,如果yes/no按鈕可以被忽略。 – Ekim 2012-08-04 06:04:17