Windows 8应用程序WebView捕获事件目标=“_空白”;

本文关键字:空白 目标 事件 应用程序 WebView Windows | 更新日期: 2023-09-27 17:57:44

我想在windows应用程序上创建一个web视图
问题是,当一个窗口将用IE打开时,我不知道如何捕捉事件。当链接的target="_blank"时,窗口会自动打开IE。我试图用C#和JS制作应用程序,但问题是一样的

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

某些链接的问题在于,它们的标签中包含target="_blank"

他们能解决这个问题吗?他们有办法赶上那些活动吗?

Windows 8应用程序WebView捕获事件目标=“_空白”;

最简单的解决方案是(使用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 加载

Startign在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;
}