如何在 C# WebBrowser 控件中获取重定向的 url

Posted

技术标签:

【中文标题】如何在 C# WebBrowser 控件中获取重定向的 url【英文标题】:How to get redirected url in C# WebBrowser Control 【发布时间】:2011-01-18 08:54:03 【问题描述】:

我有一个网页加载,进行一些计算,然后将 javascript 重定向到另一个网页。它看起来像这样:

http://www.mysite.com/startpage.html

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
$(document).ready(function() 
    window.location = "http://www.mynewurl.com";
);
</head>
<body>
Something
</body>
</html>

现在我有一个加载 WebBrowser 控件的 asp.net MVC 应用程序,我的目标是能够从我的 C# WebBrowser 控件中检索http://www.mynewurl.com

我的 WebBrowser 代码如下所示:

WebBrowser webBrowser = new WebBrowser
                                    
                                        ScrollBarsEnabled = false,
                                        Size = new Size(Width, Height),
                                        ScriptErrorsSuppressed = true
                                    ;

    webBrowser.NewWindow += WebBrowserNewWindow;
    webBrowser.Navigate("http://www.mysite.com/startpage.html");


    //wait for it to load
    while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    
        Application.DoEvents();
    

    Uri myUrl = webBrowser.Url;  //This is how I have been trying to get it.

所以当我加载我的 webBrowser 控件时,我将它发送到http://www.mysite.com/startpage.html。它执行 javascript 重定向到 http://www.mynewurl.com。我想以某种方式在我的 c# 代码中捕获该 url。

关于如何实现这一点的任何想法?

【问题讨论】:

我注意到我可以使用 Thread.Sleep(10000);在while循环加载之后,它实际上得到了我的值。我猜浏览器需要永远接受来自 javaScript 的响应。显然,这不是一个可以接受的等待时间。正在寻找另一种解决方案。 我已经决定不做这个了。我不知道如何关闭这篇文章。 【参考方案1】:

HttpWebRequest.Referer 也许?或者可以将您需要的任何数据附加为查询字符串。

【讨论】:

【参考方案2】:

我决定回答这篇文章 - 即使它发布已经快 2 年了 - 因为它在搜索引擎(例如谷歌)的热门结果中列出,但没有为我提供解决方案......

经过一番搜索,我找到了这个问题的解决方案,可以在这里找到:

http://connect.microsoft.com/VisualStudio/feedback/details/115195/webbrowser-newwindow-event-does-not-give-the-url-of-the-new-window-in-eventargs#details

这解决了当CancelEventArgs的Cancel属性设置为TRUE时,获取新窗口的URL的问题。

希望这可以帮助其他人解决这个问题,因为它尚未在 .NET 平台中解决......

【讨论】:

该 url 从微软网站返回 404。

以上是关于如何在 C# WebBrowser 控件中获取重定向的 url的主要内容,如果未能解决你的问题,请参考以下文章

C# webbrowser控件是不是能获取JS加载的数据?

C# 使用webBrowser控件获取网页中的账号密码登录网页元素并自动填写模拟自动登录?

如何在 C# 中使用 WebBrowser 控件清除浏览历史记录

如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?

C# Uwp app webbrowser 控件无法获取设备位置

求助!!!我在vs2010 c#中添加一个webbrowser控件,在控件中初始化一页面,然后输入