HarmonyOS 鸿蒙Next的web组件当h5使用 window.location.href=新地址时无法加载页面,这是为何?
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及实现方案
工程机版本:(如: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