如何在Windows 8上的Webview中捕获导航事件?

Sta*_*ies 5 c# xaml microsoft-metro windows-8

我在我的应用程序中有一个Webview,我想截取任何点击并打开IE中的链接,而不是在应用程序中的Webview内.

我只能看到NavigationFailed和LoadingComplete事件,没有关于我可以拦截的"即将导航"事件.

Sta*_*ies 7

似乎没有任何方法可以捕获任何导航事件.但是,您可以使用window.external.notify()拦截在JavaScript中调用的脚本事件

假设页面是您自己托管的内容,则可以替换

<a href="http://www.lightwoodgames.com">LINK</a>
Run Code Online (Sandbox Code Playgroud)

<a href="javascript:window.external.notify('http://www.lightwoodgames.com')">LINK</a>
Run Code Online (Sandbox Code Playgroud)

然后在您的项目中,您将要添加

webview.ScriptNotify += webview_ScriptNotify;
webview.AllowedScriptNotifyUris = WebView.AnyScriptNotifyUri;

protected async void webview_ScriptNotify(object sender, NotifyEventArgs e)
{
  await Windows.System.Launcher.LaunchUriAsync(new Uri(e.Value));
}
Run Code Online (Sandbox Code Playgroud)