HarmonyOS 鸿蒙Next的web组件当h5使用 window.location.href=新地址时无法加载页面,这是为何?

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

HarmonyOS 鸿蒙Next的web组件当h5使用 window.location.href=新地址时无法加载页面,这是为何?

咨询场景描述:

工程机版本:(如:NOH-AN00 204.0.0.65(SP1C00E67R1P12))

DevEco Studio版本:(如:DevEco Studio 4.0.3.600)

SDK版本:(如:OpenHarmony 4.0.10.10)

三方库版本:(如:@ohos/axios@2.0.5-rc.0,如使用需提供)


注1:如是问题,请提供能够稳定复现的操作步骤,最小化demo(或辅助处理人编写demo)
注2:如需demo,补充安卓/IOS上的录屏,或demo可以在现有App的哪个环节使用(若与UI相关)
注3:如是对比安卓/IOS问鸿蒙有无类似接口,请补充安卓/IOS上使用的API及实现方案

2 回复

我这边写了个demo试了下,是可以跳转的。

参考demo如下:


//Index.ets

import web_webview from '@ohos.web.webview';

@Entry
@Component
struct Index {
    @State message: string = 'Hello World';
    webviewController: web_webview.WebviewController = new web_webview.WebviewController();

    build() {
        RelativeContainer() {
            Web({ src: $rawfile("index.html"), controller: this.webviewController })
                .mixedMode(MixedMode.All)
                .javaScriptAccess(true)
                .domStorageAccess(true);
        }
        .height('100%')
        .width('100%');
    }
}
//index.html

<!DOCTYPE html>
<html>
<head>
    <script>
        function test() {
            window.location.href = "https://www.w3schools.com";
        }
    </script>
</head>
<body>
    <p>Hello World</p>
    <input type="button" value="Load new document" onclick="test()">
</body>
</html>

在HarmonyOS鸿蒙Next的web组件中,当使用window.location.href=新地址时无法加载页面,可能是由于几个技术层面的原因导致的。

首先,HarmonyOS的web组件可能对window.location.href的跳转行为进行了特定的封装或限制,以确保应用的安全性和稳定性。这种限制可能阻止了直接的URL跳转,尤其是在组件化的环境中,以确保页面间的跳转符合应用的整体架构和逻辑。

其次,如果新地址是跨域的,那么可能会因为浏览器的同源策略(Same-Origin Policy)而被阻止。在鸿蒙的web组件中,这种策略可能被更加严格地执行。

此外,还需要检查新地址是否有效,以及是否存在网络请求被拦截或失败的情况。

为了解决这个问题,可以尝试使用鸿蒙提供的特定API或方法来实现页面跳转,而不是直接使用window.location.href。同时,确保新地址是有效的,并且符合应用的安全策略。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部