2016-01-23 47 views
0

elI我正在使用Wpf應用程序。它包含一個webbrowser,用戶通過Facebook進行身份驗證。問題是用戶能夠點擊鏈接(例如:忘記密碼?)標準瀏覽器然後打開...我想要做的是禁用/阻止所有外部鏈接。所以用戶只能進行身份驗證,而不能瀏覽網頁瀏覽器控件。我箍你們可以幫助我。Wpf webbrowser禁用外部鏈接

更新1 贊同建議我可以檢查網頁瀏覽器的來源。所以我可以允許想要的頁面。但問題是鏈接。他們在IE上打開。我不想打開它們,但在所有 Description image

private void webBrowserFacebook_Navigating_1(object sender, NavigatingCancelEventArgs e) 
    { 

     string huidigeLink = Convert.ToString(webBrowserFacebook.Source); 
     MessageBox.Show(huidigeLink); 

     // check for allowed pages 
    } 

更新2 我能夠找到一個解決方案,以阻止他們:http://social.technet.microsoft.com/wiki/contents/articles/22943.preventing-external-links-from-opening-in-new-window-in-wpf-web-browser.aspx

非常SLEF解釋..謝謝你們的幫助!

+0

您可以將此限制放在WebBrowser onNavigationStarted事件偵聽器上。將此偵聽器添加到您的瀏覽器中,無論何時導航,您都可以在Event偵聽器參數中訪問URL。如果與允許的URL匹配,則繼續返回false。或停止導航。 – null1941

+0

https://msdn.microsoft.com/en-in/library/system.windows.controls.webbrowser.navigating(v=vs.110).aspx事件監聽器在這裏有幫助 – null1941

回答

0
void Window1_Loaded(object sender, RoutedEventArgs e) 
{ 
    browser = new WebBrowser(); 
    browser.Navigate(new Uri("http://www.google.com")); 
    browser.Navigating += new NavigatingCancelEventHandler(browser_Navigating); 
    browser.Navigated += new NavigatedEventHandler(browser_Navigated); 
} 

void browser_Navigating(object sender, NavigatingCancelEventArgs e) 
{ 
    //Your checks should happen here.. 
    Console.WriteLine("Loading Webpage !!"); 
} 

void browser_Navigated(object sender, NavigationEventArgs e) 
{ 
    Console.WriteLine("Webpage Loaded !!"); 
} 

您可以註冊WebBrowser.Navigating Event。 導航事件處理程序通過NavigatingCancelEventArgs類的實例。您可以通過將NavigatingCancelEventArgs對象的Cancel屬性設置爲true來取消導航。

或者,如果URL導航不匹配,則可以調用腳本或瀏覽器實例停止加載。

yourWebBrowser.InvokeScript("eval", "document.execCommand('Stop');"); 
+0

哇真棒。我會試一試。我讓你們知道。感謝名單! – Manuel

+0

它工作嗎? – null1941

+0

現在我不能測試它。星期一在工作。但我會更新帖子,當我做 – Manuel