C# 为什么我不能在WebView(UWP)中的外部浏览器中打开链接?

C# 为什么我不能在WebView(UWP)中的外部浏览器中打开链接?,c#,webview,hyperlink,uwp,windows-10-universal,C#,Webview,Hyperlink,Uwp,Windows 10 Universal,我正在开发一个即将完成的Web应用程序,该应用程序有一个本地Web应用程序,其中有一些链接,我想在外部浏览器Edge、Chrome等中打开它们 我的代码分为三部分: 1 Windows运行时组件: 2网络视图代码: XAML: 3.jQuery: 但是什么都没有发生,没有错误,没有消息,什么都没有。有人知道我应该改变什么吗?谢谢你的帮助 其他信息: 我对两个项目使用相同的配置。有两个问题导致代码无法工作 首先-Windows运行时组件会自动修改命名约定,以匹配在其上执行命名的目标平台。由于Ja

我正在开发一个即将完成的Web应用程序,该应用程序有一个本地Web应用程序,其中有一些链接,我想在外部浏览器Edge、Chrome等中打开它们

我的代码分为三部分:

1 Windows运行时组件:

2网络视图代码:

XAML:

3.jQuery:

但是什么都没有发生,没有错误,没有消息,什么都没有。有人知道我应该改变什么吗?谢谢你的帮助

其他信息:


我对两个项目使用相同的配置。

有两个问题导致代码无法工作

首先-Windows运行时组件会自动修改命名约定,以匹配在其上执行命名的目标平台。由于JavaScript方法名称按约定以小写字母开头,因此必须按如下方式调用OpenURL方法:

CallJSCSharp.openURL($(this).attr('href'));
现在,您应该能够在Windows运行时组件中设置断点,并查看实际调用的方法。但还有一个问题——OpenURL方法没有在UI线程上调用,这是启动器正常工作所必需的。要避免这种情况,您需要使用Dispatcher:

有了这个变更,代码应该按照预期工作


最后-感谢您提出一个完美的书面问题:-.

很高兴听到:-,编码愉快!有39英镑;等待RunAsync调用没有多大意义。此外,如果由于某种原因调用抛出(例如URI格式错误),这也会使应用程序崩溃。
<WebView x:Name="webView1" Source="ms-appx-web:///Assets/index.html" NavigationStarting="webView1_NavigationStarting" />
private void webView1_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
    sender.AddWebAllowedObject("CallJSCSharp", pObject: new CallJSCSharp());
}
$("a").click(function (event) {
    event.preventDefault();
    CallJSCSharp.OpenURL($(this).attr('href'));
});
CallJSCSharp.openURL($(this).attr('href'));
[AllowForWeb]
public sealed class CallJSCSharp
{
    public async void OpenURL(string url)
    {
        await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
            async () => { 
                 await Launcher.LaunchUriAsync(new Uri(url)); 
            });
    }
}