【发布时间】:2009-06-23 15:18:45
【问题描述】:
我有一个 c# 网络浏览器,它显示的一个页面有一个表单。提交表单后,它会将数据发布到 IE 中的新窗口。我想捕获该数据并将其转发到我的应用程序中的另一个 C# Web 浏览器。所以我不希望它在调用javascript函数window.open时打开IE浏览器,我希望它在第二个浏览器窗口中打开它。
【问题讨论】:
-
有谁知道在提交之前向网页添加表单元素的方法?
我有一个 c# 网络浏览器,它显示的一个页面有一个表单。提交表单后,它会将数据发布到 IE 中的新窗口。我想捕获该数据并将其转发到我的应用程序中的另一个 C# Web 浏览器。所以我不希望它在调用javascript函数window.open时打开IE浏览器,我希望它在第二个浏览器窗口中打开它。
【问题讨论】:
请注意我在主题中所做的更改。没有“C# Web 浏览器”之类的东西。
您正在 C# 程序中使用 Windows 窗体 Web 浏览器控件。您希望在创建新窗口时收到通知,以便您可以创建另一个 Windows 窗体以显示另一个包含新内容的 Web 浏览器控件。
【讨论】:
您不能直接使用 WebBrowser 执行此操作,因为它不会为您提供 NewWindow 事件的 eventargs 的 url,但有一个解决方案 here 通过继承 WebBrowser 控件并添加一个新事件来为您提供 url。 然后您只需取消导航(使用事件的 Cancel 属性)并将新 url 指向您的其他浏览器。
编辑
好的,那么你将不得不做很多手动工作,首先禁止新窗口,然后获取表单的提交事件,如下所示:
private void webBrowser1_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.Forms[0].AttachEventHandler("onsubmit",
new EventHandler(submit));
}
private void submit(object o, EventArgs e) {...}
并在提交方法中进行所有处理,但您必须查看文档元素以提取所有发布值并将它们手动发布到您的其他网络浏览器控件中。
您可能还必须修改表单的 onSubmit 属性的 html 代码以不打开新窗口,因为要阻止它打开并不容易。
【讨论】:
我发现这篇文章在处理类似问题时很有帮助:CodeProject - MultiTab Browser
【讨论】: