【问题标题】:Capturing Javascript Alert in Webbrowser Control在 Web 浏览器控件中捕获 Javascript 警报
【发布时间】:2009-10-22 18:34:55
【问题描述】:

使用 webbrowswer 控件浏览网站。有时会出现涉及 javascript 弹出框的错误。当这种情况发生时,我想做几件事。

  1. 知道何时弹出 javascript 警报。

我已经成功地使用了 LostFocus 事件,但是任何时候它失去焦点,代码运行都会很烦人。

  1. 我想知道警报框显示的确切文本。

我不确定在哪里可以找到警报框对象或将其强制转换以在 C# 中使用。我在互联网上到处找,找不到。

有什么线索吗?

【问题讨论】:

  • 您的问题有任何更新吗?我也面临同样的问题。

标签: c# event-handling alert javascript


【解决方案1】:

如果您只想捕获出现的脚本错误对话框,我建议您捕获window.onerror DOM 事件。如果您为此事件分配处理程序,则消息、(脚本)文件名和行号将作为参数传递,这些都是在弹出的错误对话框中显示的所有内容。请注意,默认情况下,大多数用户都会关闭脚本错误对话框,因此如果预期目的是面向大量受众,则最好遵守这一点。

我不确定是否有更简单的方法,我只使用旧的 COM WebBrowser 组件。

【讨论】:

  • 知道如何将其与网络浏览器联系起来,我不知道如何将两者联系起来。
  • 不太清楚如何用 C# 来做。请参阅此知识库文章:support.microsoft.com/kb/312777 尽管您想使用窗口对象而不是文档对象 (document.parentWindow)
  • 嘿,安迪,我还在研究它。感谢您的指导。
  • 安迪,我能够访问 onError 但该事件永远不会触发,因为 javascript 警报没有注册为实际的窗口错误。感谢您的建议,因为它教会了我更多关于 webbrowser 事件处理的知识。
  • 很高兴能为您提供帮助。我想我稍微误解了你的问题,但如果我指出你正确的方向,那是一个很好的结果:)
【解决方案2】:

这样做:

window.alert = function(txt) {
   // Do something
}

这将允许您使用警报文本执行回调或任何其他操作。

【讨论】:

  • 我没有注入 javascript。我根本不使用javascript。我只想捕获使用 webbrowser 控件时发生的 javascript 警报。
猜你喜欢
  • 2010-10-13
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 2013-02-25
相关资源
最近更新 更多