我有一个浏览器,在无线连接上打开一个Uri,否则打开一个html页面。 在这两种情况下,Uri或html页面都在内部浏览器中打开。这两个页面都包含链接。如果用户点击它们,我想在外部浏览器中打开链接。但它们总是在内部浏览器中打开。
以下是我的代码:
private void Information_Loaded(Object sender, RoutedEventArgs e)
{
bool hasNetworkConnection =
NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211;
if (!hasNetworkConnection)
{
Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream("index_en.html"))
{
using (StreamReader reader = new StreamReader(stream))
{
string html = reader.ReadToEnd();
browser.NavigateToString(html);
}
}
}
else
{
browser.Navigate(Uri);
}
}
xaml是:
<phone:WebBrowser Name="browser" Margin="0,78,0,0" Navigating="on_browser_navigation" />
如何处理Html页面或Uri中的链接点击?
编辑:我处理了导航事件
private void on_browser_navigation(Object sender, NavigatingEventArgs e)
{
e.Cancel = true;
WebBrowserTask wbt = new WebBrowserTask();
wbt.URL = e.Uri.ToString();
wbt.Show();
}
但是这并没有显示Uri的必要行为。它直接在外部浏览器中打开Uri。
答案 0 :(得分:2)
处理WebBrowser控件中的Navigating事件。
在那里检查e.Uri
以查看它是否是外部链接。如果是这样,请设置e.Cancel
= true;
,然后使用WebBrowserTask
来启动Internet Explorer中的外部链接。
答案 1 :(得分:0)
通过查看URI,我能够检查URI是外部的还是外部的。主持人:
if (!e.Uri.Host.Contains("www.mysite.com"))
{
e.Cancel = true;
}
else
{
'do something
}