当前位置: 首页 > 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进行判断,网页都可以正常加载出来了

官网文档

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

在这里插入图片描述

http://www.lryc.cn/news/388480.html

相关文章:

  • 微信换手机号了怎么绑定新手机号?
  • 64.WEB渗透测试-信息收集- WAF、框架组件识别(4)
  • java.lang.LinkageError: 链接错误的正确解决方法,亲测有效,嘿嘿,有效
  • python最基础
  • Python学习路线图(2024最新版)
  • 66、基于长短期记忆 (LSTM) 网络对序列数据进行分类
  • RabbitMQ消息可靠性等机制详解(精细版三)
  • 88888
  • 深度学习之激活函数
  • OpenStack开源虚拟化平台(一)
  • C++ | Leetcode C++题解之第207题课程表
  • vue3中的自定义指令
  • Postman接口测试工具的原理及应用详解(一)
  • C++ initializer_list类型推导
  • 造一个交互式3D火山数据可视化
  • 【网络安全】一文带你了解什么是【CSRF攻击】
  • 短视频电商源码如何选择
  • 444444
  • 初识LangChain的快速入门指南
  • OpenBayes 教程上新 | CVPR 获奖项目,BioCLlP 快速识别生物种类,再也不会弄混小浣熊和小熊猫了!
  • 24 年程序员各岗位薪资待遇汇总(最新)
  • Android SurfaceFlinger——系统动画服务启动(十四)
  • VaRest插件常用节点以及Http请求数据
  • 【Linux】线程id与互斥(线程三)
  • JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?
  • 主流分布式消息中间件RabbitMQ、RocketMQ
  • 【Unity Linux】模型导致的Unity项目崩溃
  • 22222
  • 大数据领域的常用开发语言详解
  • SpringBoot设置自动跳转前端界面