当前位置: 首页 > news >正文

HarmonyOS ArkUi ArkWeb加载不出网页问题踩坑

使用

使用还是比较简单的,直接贴代码了
别忘了配置网络权限

@Entry
@Component
struct WebPage {@State isAttachController: boolean = false@State url: string = ''@State title: string = ''@Prop controller: web_webview.WebviewController = new web_webview.WebviewController()// 与前端交互 对象jsObj = new JsObj({setHeaderContentCallback: (str: string) => {this.title = str}});// js 调用App方法: 需要在数组中声明,设置给 methodList:jsArray: string[] = ["setHeaderContent", "toLogin", "jumpToBossDetailNew", "jumpToBossDetail", "jumpToCompanyDetail", "openRenewDefaultNavPageLoad", "openRenewPageLoad", "openNewPageLoad", "openBrowser"];aboutToAppear(): void {this.url = (router.getParams() as RouterParams).urlif (this.url.indexOf('?') > 0) {this.url = this.url + BranchUtils.appendBranchParams()} else {this.url = this.url + `?${BranchUtils.appendBranchParams()}`}web_webview.WebviewController.setWebDebuggingAccess(true);PreferencesUtil.getString("urlCookie").then((value) => {// 如果连接本地调试 一定要写完整的域名  带上http//web_webview.WebCookieManager.configCookieSync('http://10.1.65.120:5173/', value)// 设置cookieweb_webview.WebCookieManager.configCookieSync('.sscha.com', value)})web_webview.once("webInited", () => {})eventBus.on(EventBusId.ID_LOGIN, () => {// todo})}build() {Column() {PubTitle({ title: this.title, isShowRightBtn: false })Web({ src: this.url, controller: this.controller }).width('100%').height('100%').mixedMode(MixedMode.All).javaScriptAccess(true).javaScriptProxy({object: this.jsObj,name: "android",methodList: this.jsArray,controller: this.controller,}).onControllerAttached(() => {// 官方建议是在这里设置 serAgentthis.controller.setCustomUserAgent(this.controller.getUserAgent() + BranchUtils.appendBranch())}).onPageEnd((urlEnd) => {console.log("onPageEnd= " + JSON.stringify(urlEnd))})}.width('100%')}
}

export interface JSCallback {reqResult?: (code: string) => void;setHeaderContentCallback?: (msg: string) => void;
}export class JsObj {callback?: JSCallbackregistCallBack(callback: JSCallback) {this.callback = callback}constructor(callback?: JSCallback) {this.callback = callback}// ...省略代码
}

加载网页(这个问题不难但是血坑,搞了好久才定位到问题)

  • 现象:
    Android 、Ios 都有线上App 网页都是调试好的
    鸿蒙加载有些网页加载不出来(绝大多数都加载不出来),有些能加载出来 。个人认为肯定不是ArkWeb的问题,这一块就需要跟前端调试,最后排查出的问题还真是前端的问题

  • 排查结果
    前端使用:localStorage,调用时localStorage为null,导致整个界面都加载不出来
    在这里插入图片描述
    经过前端修改,对localStorage是否为null进行判断,网页都可以正常加载出来了

官网文档

官网上有一个写法,不过没验证
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章:

  • 狄克斯特拉算法
  • 基于SpringBoot的CSGO赛事管理系统
  • Vue2-Vue Router前端路由实现思路
  • 事务底层与高可用原理
  • linux中 nginx+tomcat 部署方式 tomcat挂掉设置自动启动
  • Elasticsearch架构基本原理
  • C++时区转换
  • 51单片机第15步_串口多机通讯使用CRC8校验
  • 信创产业政策,信创测试方面
  • 44 mysql batch insert 的实现
  • JavaScript懒加载图像
  • Vue移动端地图App:van-uploader导致的卡顿问题
  • 企业级-生成PDF移除异常空白页
  • pycharm配置conda解释器
  • 【SSL 1056】最大子矩阵 (多维DP)
  • 【面试系列】之二:关于js原型
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • E-HPC支持多队列管理和自动伸缩
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript设计模式与开发实践系列之策略模式
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • mysql中InnoDB引擎中页的概念
  • OSS Web直传 (文件图片)
  • spring boot 整合mybatis 无法输出sql的问题
  • vuex 学习笔记 01
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 对超线程几个不同角度的解释
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 技术发展面试
  • 利用jquery编写加法运算验证码
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 深度学习中的信息论知识详解
  • 使用agvtool更改app version/build
  • 提醒我喝水chrome插件开发指南
  • 网页视频流m3u8/ts视频下载
  • 原生js练习题---第五课
  • 怎样选择前端框架
  • Android开发者必备:推荐一款助力开发的开源APP
  • Java总结 - String - 这篇请使劲喷我
  • 关于Android全面屏虚拟导航栏的适配总结
  • #pragma pack(1)
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (5)STL算法之复制
  • (pojstep1.3.1)1017(构造法模拟)
  • (solr系列:一)使用tomcat部署solr服务
  • (超详细)语音信号处理之特征提取
  • (二)Linux——Linux常用指令
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (四)JPA - JQPL 实现增删改查
  • (转)四层和七层负载均衡的区别
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1