2010-02-18 33 views
2

我有一個加載網頁,做了一些計算,然後將JavaScript重定向到另一個網頁。它看起來是這樣的:如何在C#WebBrowser控件中獲取重定向的url

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控件和我目標是能夠從我的C#中檢索http://www.mynewurl.com一個asp.net MVC應用程序WebBrowser控件。

我的web瀏覽器的代碼如下所示:

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. 

所以,當我打開我的web瀏覽器控制我把它發送到http://www.mysite.com/startpage.html。它做了一個JavaScript重定向到http://www.mynewurl.com。我想以某種方式捕捉我的C#代碼中的URL。

關於我如何實現這一點的任何想法?

+0

我noticted,我可以使用 了Thread.Sleep(10000); 在while循環加載之後,它實際上獲取我的值。我猜瀏覽器需要永遠接受來自javaScript的響應。顯然這不是一個可以接受的等待時間。尋找另一種解決方案。 – 2010-02-18 16:34:19

+0

我決定不去追求這個。我不知道如何關閉這篇文章。 – 2010-02-23 14:33:16

回答

0

HttpWebRequest.Referer也許?或者可以追加任何你需要的數據作爲查詢字符串。

0

我已經決定回覆這篇文章 - 即使它發佈已經有將近2年了 - 因爲它在搜索引擎(如谷歌)的頂級搜索結果中列出,但沒有爲我提供解決方案...

經過一番搜索,我找到了解決這個問題,它可以在這裏找到:

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

這解決了獲取新窗口的URL的問題,當取消CancelEventArgs的財產設置爲TRUE。

有了希望這可以幫助其他人,這個問題,因爲它沒有在.NET平臺解決...

+0

該網址從微軟wesbsite返回404。 – shellscape 2013-01-29 17:35:02