日期:2014-05-17  浏览次数:21277 次

WebBrowser限定访问指定的网站
我在WPF应用程序中,利用WebBrowser控件,将指定的一个网站的首页加载出来,现在有个需求,就是在这个应用程序中,要限制访问其他网站,就是说只能访问这个网站的不同页面,比如说:我现在访问的这个网站中,本来有友情链接、还有新浪微博登陆、腾讯微博登陆等等,这些链接一点击肯定就跳转到其他公司网站去了,现在就是要限制这样的功能,我该怎么做,烦请提供个思路啊,谢谢了,急
webbrowser wpf

------解决方案--------------------
Navigating事件
获取WebBrowserNavigatingEventArgs e
判断e.Url是否符合网址
不符合那么e.Cancel=true就可以取消访问
------解决方案--------------------
那就不用正则呗。
列出一系列允许访问的域名,如baidu.com,google.com
然后挨个域名去判断网址是否包含它怎么样?
strUrl.Contains(strDomain)
有一个包含则通过,全没有则不通过。
------解决方案--------------------
^(https?://)?www\.(163
------解决方案--------------------
baidu)\.com$

------解决方案--------------------
在同一个浏览器,那最好就不要用wpf的webbrowser了。
嵌一个windowsFormHost,再套一个winform下的webbrowser吧。
然后设置新窗口事件和加载完成事件

    // 新建窗口事件
    void browser_NewWindow(object sender, System.ComponentModel.CancelEventArgs e)
    {
      e.Cancel = true;
    }

    // 页面加载完成事件
    void browser_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
    {
      //将所有的链接的目标,指向本窗体
      foreach (System.Windows.Forms.HtmlElement archor in browser.Document.Links)
      {
        archor.SetAttribute("target", "_self");
      }

      //将所有的FORM的提交目标,指向本窗体
      foreach (System.Windows.Forms.HtmlElement form in browser.Document.Forms)
      {
        form.SetAttribute("target", "_self");
      }
    }