HarmonyOS 鸿蒙Next web页面打开的url链接通过window.open跳转到新窗口的方法及鸿蒙版跳转问题
HarmonyOS 鸿蒙Next web页面打开的url链接通过window.open跳转到新窗口的方法及鸿蒙版跳转问题
@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}`);
})
}
参考链接:
在HarmonyOS鸿蒙系统中,Next web页面通过window.open
跳转到新窗口的方法与标准Web开发中的用法基本一致。然而,鸿蒙系统可能会对权限和窗口管理有更严格的控制,因此在实现过程中可能会遇到一些特定于鸿蒙的跳转问题。
具体实现步骤如下:
-
基本用法:在鸿蒙Next web页面中,可以直接使用JavaScript的
window.open
方法来打开一个新的浏览器窗口或标签页。例如:window.open('https://www.example.com', '_blank');
,其中'_blank'
表示在新窗口或新标签页中打开。 -
鸿蒙版跳转问题:鸿蒙系统可能会因为安全策略或应用权限问题而阻止
window.open
的默认行为。如果遇到这种情况,开发者需要检查应用的权限设置,确保应用具有打开新窗口的权限。 -
替代方案:如果
window.open
在鸿蒙系统上无法正常工作,可以考虑使用其他方式实现页面跳转,如通过应用内嵌的WebView组件进行页面加载,或者通过鸿蒙系统提供的特定API进行页面跳转(这需要深入了解鸿蒙系统的开发文档)。
请注意,鸿蒙系统的具体实现和限制可能会随着版本更新而发生变化。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。