Windows 8应用程序WebView捕获事件目标=" _blank"

时间:2014-04-10 19:13:30

标签: c# windows windows-8 webview windows-8.1

我想在Windows应用程序上创建一个webview。
问题是我不知道如何在IE打开窗口时捕获事件。当链接有target =“_ blank”时,windows会自动打开IE。我试着用C#和JS制作应用程序,但问题是一样的。

在JS部分,我尝试使用'newwindow'添加一个事件,但它不起作用 对于C#部分,我在XAML上使用了webview,而在HTML中使用了x-ms-window

某些链接的问题是它们的标记中有target =“_ blank”。

他们是解决这个问题的方法吗?他们是一种捕捉这些事件的方法吗?

2 个答案:

答案 0 :(得分:2)

最简单的解决方案是(使用jQuery):

$('a[target=_blank]').on('click',function(e){ 
    e.stopPropagation();
    e.preventDefault();
    window.external.notify($(this).prop('href'));
});

在Windows 8中,您必须将您的页面(主机)添加到AllowedScriptNotifyUris

在Windows 8.1中,您可能需要使用其他一些解决方法来使用window.external.notify,因为允许的主机嵌入在应用清单中,必须通过https加载

答案 1 :(得分:0)

在Windows 10上启动,您可以使用WebView.NewWindowRequested事件:

private void WebView1_NewWindowRequested(
    WebView sender,
    WebViewNewWindowRequestedEventArgs args)
{
    // Prevent the browser from being launched.
    args.Handled = true;

    // Open the Uri in the current window.
    sender.Source = args.Uri;
}