回答
在覆盖原始的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