【问题标题】:How do I open a link in the system browser from a UWP app using javascript?如何使用 javascript 从 UWP 应用程序在系统浏览器中打开链接?
【发布时间】:2019-07-30 22:45:07
【问题描述】:

我开发了一个网络应用程序。我正在使用 Cordova 为 Android/iOS/OSX/Windows 创建应用程序包装器,当我测试 Windows 应用程序时,我遇到了一个问题。

该应用程序与我的应用程序域之外的许多链接进行交互,包括访问第三方用户内容和使用 OAuth 通过第三方服务为用户进行登录。 OAuth 重定向是从我的应用程序的后端服务器生成的,然后用户通过 javascript 手动重定向到它们。

let response = await this.$apollo.mutate({
  mutation: initializeConnection,
  variables: variables
});

window.location = response.data.initializeConnection.redirectUrl;

在 Android/iOS/OSX 中,这会在系统浏览器中打开 OAuth 重定向,这正是我想要的。但是,Windows 应用程序没有。我在 Cordova config.xml 文件中将我的应用程序的 URL 设置为 <allow-navigation>,当它为 Windows 构建时,它会将它们插入到 appmanifest 中(它们显示为内容 URI)。当上述重定向在 Windows 中发生时,会出现“应用程序无法使用脚本加载 <url> url,因为该 url 启动另一个应用程序”的错误。

我不想打开另一个应用程序,我只想在系统浏览器中打开它们。作为比较点,我显示为<a href="<whatever>" target="_blank"> 的用户内容将在系统浏览器中正常打开。我尝试使用window.open()打开重定向而不是window.location,虽然如果我将“https://*”添加到内容URI,这将在另一个应用程序窗口中打开重定向,而不是系统浏览器.

我需要做什么才能在系统浏览器中打开这些重定向?

【问题讨论】:

    标签: javascript cordova uwp


    【解决方案1】:

    在 UWP 中可以这样做以使用 url 打开默认浏览器

    Windows.System.Launcher.launchUriAsync(  
        new Windows.Foundation.Uri(url))
        .then(function (success) {
            if (success) {
                console.log('opened ' + url);
            } else {
                console.log('failed opening ' + url);
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 2013-05-12
      • 2022-11-30
      • 1970-01-01
      相关资源
      最近更新 更多