HarmonyOS 鸿蒙Next web页面打开的url链接通过window.open跳转到新窗口的方法及鸿蒙版跳转问题

发布于 1周前 作者 caililin 来自 鸿蒙OS

HarmonyOS 鸿蒙Next web页面打开的url链接通过window.open跳转到新窗口的方法及鸿蒙版跳转问题

web页面打开的url链接,通过  window.open跳转到新窗口,如何进行跳转,现在鸿蒙版跳转不过去

3 回复
@Entry
@Component
struct Index {
  private webController: webview.WebviewController = new webview.WebviewController();

  aboutToAppear(): void {
    webview.WebviewController.setWebDebuggingAccess(true);
    webview.WebCookieManager.putAcceptThirdPartyCookieEnabled(true);
  }

  build() {
    RelativeContainer() {
      Web({ src: "您的web网址", controller: this.webController })
        .domStorageAccess(true)
        .javaScriptAccess(true)
        .imageAccess(true)
        .onlineImageAccess(true)
        .fileAccess(true)
        .mixedMode(MixedMode.All)
    }.height('100%').width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next web页面打开的url链接通过window.open跳转到新窗口的方法及鸿蒙版跳转问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以用web的拦截请求事件:onLoadIntercept

拦截到请求判断是你要跳转的url时,去拉起app,demo如下:

 .onLoadIntercept((event) => {
        const url: string = event.data.getRequestUrl();
        if (url === 'third-party://pages/toThirdApp') {
          const link: string = "appScheme://www.test.com:80/path1";
          if (!bundleManager.canOpenLink(link)) {
            return true;
          }
          const openLinkOptions: OpenLinkOptions = {
            appLinkingOnly: false,
            parameters: {
              name: 'test'
            }
          };
          this.context.openLink(link, openLinkOptions).then(() => {
            console.info('open link success.');
          }).catch((err: BusinessError) => {
            console.error(`open link failed. Code is ${err.code}, message is ${err.message}`);
          })
        }

参考链接:

https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-web-app-jump-and-pull-up-V5#section37419543116

在HarmonyOS鸿蒙系统中,Next web页面通过window.open跳转到新窗口的方法与标准Web开发中的用法基本一致。然而,鸿蒙系统可能会对权限和窗口管理有更严格的控制,因此在实现过程中可能会遇到一些特定于鸿蒙的跳转问题。

具体实现步骤如下:

  1. 基本用法:在鸿蒙Next web页面中,可以直接使用JavaScript的window.open方法来打开一个新的浏览器窗口或标签页。例如:window.open('https://www.example.com', '_blank');,其中'_blank'表示在新窗口或新标签页中打开。

  2. 鸿蒙版跳转问题:鸿蒙系统可能会因为安全策略或应用权限问题而阻止window.open的默认行为。如果遇到这种情况,开发者需要检查应用的权限设置,确保应用具有打开新窗口的权限。

  3. 替代方案:如果window.open在鸿蒙系统上无法正常工作,可以考虑使用其他方式实现页面跳转,如通过应用内嵌的WebView组件进行页面加载,或者通过鸿蒙系统提供的特定API进行页面跳转(这需要深入了解鸿蒙系统的开发文档)。

请注意,鸿蒙系统的具体实现和限制可能会随着版本更新而发生变化。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部