当前位置:   article > 正文

鸿蒙ArkTs开发WebView问题总结_鸿蒙webview

鸿蒙webview

1. 加载WebView页面报错"Can not read properties of null (reading 'getltem')"

解决:

在加载webview的controller中加入.domStorageAccess(true)

  1. build() {
  2. Column() {
  3. Row().width('100%').height('50rpx')
  4. Web({ src: src, controller: this.controller })
  5. .javaScriptAccess(true)
  6. .domStorageAccess(true)
  7. }
  8. }

官方文档

文档中心

2.如何操作网页中的LocalStorage

解决:

通过操作应用侧runJavaScript()方法调用前端页面的JavaScript相关函数。

本人封装操作LocalStorage 方法

  1. interface JsMethods {
  2. setStorage(key: string, value: any): Promise<void>;
  3. getStorage(key: string): Promise<string>
  4. }
  5. /**
  6. * webview中常用的js操作封装
  7. */
  8. export class WebJsUtil implements JsMethods {
  9. private controller: WebviewController;
  10. constructor(controller: WebviewController) {
  11. this.controller = controller;
  12. }
  13. async setStorage(key: string, value: any): Promise<void> {
  14. this.controller.runJavaScript("window.localStorage.setItem('" + key + "', '" + value + "')")
  15. }
  16. async getStorage(key: string): Promise<string> {
  17. const res = await this.controller.runJavaScript("window.localStorage.getItem('" + key + "')")
  18. return res
  19. }
  20. }

调用:

  1. build() {
  2. Column() {
  3. Row().width('100%').height('50rpx')
  4. Web({ src: new BaseUrl().APPOINT_LIST, controller: this.controller })
  5. .javaScriptAccess(true)
  6. .onPageBegin(async (event) => {
  7. const access_token = await PreferenceModel.getPreference('access_token')
  8. const refresh_token = await PreferenceModel.getPreference('refresh_token')
  9. const webJs = new WebJsUtil(this.controller)
  10. await webJs.setStorage('userInfo', JSON.stringify(this.userInfo))
  11. await webJs.setStorage('access_token', access_token)
  12. await webJs.setStorage('refresh_token', refresh_token)
  13. })
  14. .domStorageAccess(true)
  15. }
  16. }

注: window.localStorage.setItem('" + key + "', '" + value + "') 必须在 value 外有两个单引号 包含住

3.WebView 页面在windows模拟器无法出现滚动条滚动

解决:

亲测在Mac 的模拟器可以滚动,且真实模拟机也可以出现滚动条下拉,固为windows的模拟器bug,开发者无需理会,如必要可用 上下箭头进行页面上下滚动即可

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/296842
推荐阅读
相关标签
  

闽ICP备14008679号