C# 阻止WebView在其他浏览器中打开链接

C# 阻止WebView在其他浏览器中打开链接,c#,webview,uwp,C#,Webview,Uwp,我有一个webview,我希望如果target=\u blank,那么不要在浏览器中打开它,而是在webview中保持打开状态。 我尝试了下面的代码: private async void webView_LoadCompleted(object sender, NavigationEventArgs e) { await webView.InvokeScriptAsync("eval", new[] { @"(function() {

我有一个webview,我希望如果
target=\u blank
,那么不要在浏览器中打开它,而是在webview中保持打开状态。 我尝试了下面的代码:

private async void webView_LoadCompleted(object sender, NavigationEventArgs e)
{
    await webView.InvokeScriptAsync("eval", new[]
    {
        @"(function()
        {
            var hyperlinks = document.getElementsByTagName('a');
            for(var i = 0; i < hyperlinks.length; i++)
            {
                if(hyperlinks[i].getAttribute('target') != null)
                {
                    hyperlinks[i].setAttribute('target', '_self');
                }
            }
        })()"
    });
}
private async void webView\u LoadCompleted(对象发送方,NavigationEventArgs e)
{
等待webView.InvokeScriptAsync(“eval”,新[]
{
@“(职能()
{
var hyperlinks=document.getElementsByTagName('a');
对于(var i=0;i

但是有些网站可以在webview中保持打开状态,还有一个网站可以在浏览器中打开。如何修复此问题以使webview上的所有链接保持打开状态?

您的代码不起作用,因为图像中的“选择”按钮是HTML
元素,而不是
。当用户在中执行导致在新窗口中打开内容的操作时,会发生此事件。我们可以提供新窗口请求的自定义处理,并将属性设置为true以防止启动默认浏览器。以下是一个简单的示例:

private void webView_NewWindowRequested(WebView sender, WebViewNewWindowRequestedEventArgs args)
{
    webView.Navigate(args.Uri);

    args.Handled = true;
}

有关更多信息,请参见中的备注示例

能否分享您在
WebView
中使用的html源代码?在我的测试中,您的代码运行良好。这是上述问题的一个示例项目:当您已经在查看航班时刻表并将通过按select按钮选择航班时,它将直接进入web浏览器(不在webview中),例如图像(我给了一个红色圆圈)。我想留在webview。如何处理?使用上述代码时,链接不会在web浏览器中打开。但链接无法打开。我希望这些链接可以保持打开状态,但在webview中保持打开状态(而不是在web浏览器中)。@Rose“链接无法打开”是什么意思?我用您的示例项目测试了这段代码,效果很好。