我试图拦截在WebBrowser控件中的链接点击。 我的HTML页面包含自定义链接,对于一些以shared开头的内容://我想在用户点击它时截取。如何拦截用户点击网页浏览器中的链接
在iPhone上,我会使用webView:shouldStartLoadWithRequest:navigationType:方法,并查看所选的URL。
我还没有设法重现与Windows Phone的Silverlight类似的行为。
我做这样的事情:
{
webBrowser1.Navigating += new EventHandler<NavigatingEventArgs>(webBrowser1_Navigating);
}
void webBrowser1_Navigating(object sender, NavigatingEventArgs e)
{
string scheme = null;
try
{
scheme = e.Uri.Scheme; // <- this is throwing an exception here
}
catch
{
}
if (scheme == null || scheme == "file")
return;
// Not going to follow any other link
e.Cancel = true;
if (scheme == "shared")
{
}
但我想读URI的一些属性时,当它是一个标准的URI具有缺省文件例外:// URL 此外,该导航事件”不是个t甚至触发链接开始共享://
现在,我能够捕获攻丝共享:/ /我不在乎,但至少我希望能够检索URL我们将导航到并取消特定URL的默认操作。
任何想法发生了什么? 感谢
编辑: 原来,问题是,只对以下链接产生的导航事件:文件:// http://或至mailto:// URI的方案属性是只适用于http://和mailto://链接
所以我最后做的是用http://shared/blah替换shared://链接...然后我看网址...这适用于我的目的。我现在可以拥有不同操作的链接(如打开额外的窗口),具体取决于html中的链接。
其实异常抛出一切,但外部链接(URL以http://开头)或电子邮件(URL以mailto://开头) – jyavenard 2012-01-10 09:14:19
您是否尝试过使用e.Uri.ToString()然后解析它来检索该方案? – 2012-01-10 09:32:51
如何检测何时点击了“shared://”? – keyboardP 2012-01-10 12:41:40