我有,我用我的应用程序中显示HTML广告网页视图组件。 当用户在web视图点击广告我想开在外部浏览器中的广告链接。 我怎么做?
我需要这样的东西从WP7浏览器OnNavigating。 我试过的WebView的螺纹事件,但它永远不会被调用,甚至当我设置IsTapEnabled =真。 我需要这样的东西
我有,我用我的应用程序中显示HTML广告网页视图组件。 当用户在web视图点击广告我想开在外部浏览器中的广告链接。 我怎么做?
我需要这样的东西从WP7浏览器OnNavigating。 我试过的WebView的螺纹事件,但它永远不会被调用,甚至当我设置IsTapEnabled =真。 我需要这样的东西
您将需要使用ScriptNotify事件这一点。 以下是我处理的情况下(使用NavigateToString)。 如果您正在检索从URL的网页视图内容,你需要能够修改HTML这个工作。
下面的JavaScript代码添加到您的HTML
<script type="text/javascript">for (var i = 0; i < document.links.length; i++) { document.links[i].onclick = function() { window.external.notify('LaunchLink:' + this.href); return false; } }</script>
这增加了一个onclick处理程序在页面上的每一个环节(<a HREF="..."> </A>)。 window.external.notify是一个JavaScript方法在网页视图工作。
在ScriptNotify事件处理程序添加到网页视图。
WebView.ScriptNotify += WebView_ScriptNotify;
声明事件处理程序
async private void WebView_ScriptNotify(object sender, NotifyEventArgs e) { try { string data = e.Value; if (data.ToLower().StartsWith("launchlink:")) { await Launcher.LaunchUriAsync(new Uri(data.Substring("launchlink:".Length), UriKind.Absolute)); } } catch (Exception) { // Could not build a proper Uri. Abandon. } }
请注意,如果您使用的是外部URL,这已被添加到的WebView允许白名单尤里斯( http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml。 controls.webview.scriptnotify供参考)。
尝试处理NavigationStarting事件。 在这里,您可以拦截和取消URL的加载。 您可以过滤该链接在网页视图中打开,并且在默认浏览器打开。
private async void webView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
if(null != args.Uri && args.Uri.OriginalString == "URL OF INTEREST")
{
args.Cancel = true;
await Launcher.LaunchUriAsync(args.Uri);
}
}