2016-01-23 50 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