问题描述
||
我正在使用WPF Web浏览器,基本上,当我加载一个外部URL时,我想过滤所有加载的页面,以确保该URL不包含脏话或色情字词。
这很容易在页面加载时完成,因为我对照我的List badwords检查了URL;我还设置了一个“加载完成”方法,该方法可以使我获得被单击单词的网址,但是这不能正常工作:-
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窗口中加载任何错误的内容,弹出窗口需要通知我们。我还需要在地址栏中显示当前网址
请多多帮助
:)
解决方法
收听
WebBrowser.Navigating
事件(docs),然后在NavigatingCancelEventArgs
中检查Uri
。如果您不想允许导航,请设定e.Cancel = true
。
但是您有效的Uri检查是更复杂的问题。
, private void webBrowser1_Navigating(object sender,NavigatingCancelEventArgs e)
{
string currentURl= e.Uri.ToString();
_addrBox.Text = currentURl;
}
这是我的解决方案。
也许会帮助某人