HowTo:WPF Webbrowser返回当前网址/过滤色情内容

时间:2011-06-14 09:10:00

标签: wpf browser

我正在使用WPF webbrowser,基本上当我加载外部网址时,我想过滤所有加载的网页,以确保网址不包含发誓或色情类型的单词。

这在页面加载时很容易,因为我检查了我的List badwords的URL;我还设置了一个Load Completed方法,它获取了点击单词的网址,但这不能正常工作: -

    void webBrowser1_LoadCompleted(object sender, NavigationEventArgs e)
    {
        mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)this.webBrowser1.Document;

        foreach (IHTMLElement link in doc.links)
        {
            HTMLAnchorElement anchor = link as HTMLAnchorElement;
            if (anchor != null)
            {
                HTMLAnchorEvents_Event handler = anchor as HTMLAnchorEvents_Event;
                if (handler != null)
                {
                    handler.onclick += new HTMLAnchorEvents_onclickEventHandler(delegate()
                    {
                        uxURLText.Text = anchor.href;

                        //if (HelperClass.isNotFile(anchor.href))
                       // {

                        if (basepage.nonSafeWords.WordsContainSwearWord(anchor.href))
                        {
                            System.Windows.MessageBox.Show(basepage.INTERNET_RESTRICTION_NOTICE);

                        }
                        else
                        {
                            System.Windows.MessageBox.Show("Word Ok");
                        }
                        return true;
                    });
                }
            }
        }
    }

我需要基本上停止在窗口中加载任何不良内容,无论是链接,按钮还是ajax,如果点击了错误的链接,弹出窗口需要通知我们。我还需要在地址栏中显示当前网址

请多多谢意

:)

2 个答案:

答案 0 :(得分:1)

收听WebBrowser.Navigating活动(docs)并查看Uri中的NavigatingCancelEventArgs。如果您不想允许导航,请设置e.Cancel = true

但是你的有效Uri检查是更复杂的问题。

答案 1 :(得分:0)

private void webBrowser1_Navigating(object sender, NavigatingCancelEventArgs e)
    {
    string currentURl= e.Uri.ToString();
    _addrBox.Text = currentURl;
    }

这是我案例中的解决方案。 也许它会帮助某人