HarmonyOS 关于web组件的js运行环境的生命周期及页面间通信问题

web组件在所属父页面不可见时是否有相关限制,如web的js环境是否可用,H5的接口请求是否会挂起等

在app内构建了一个包含web组件的通用H5展示页面 以下统称为H5容器页

1.当H5容器页不可见比如跳转至其他页面时,请问web组件的js环境是否会被挂起,js方法和网络请求是否可执行?

2.同上场景,若当前app在其他页面时,此时如果需要通知路由栈中的某个H5容器页执行相关js方法,请问如何进行页面间通信,调用目标页面的webController 或者有无最佳实践方案?

HarmonyOS
2024-12-25 14:00:58
866浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

1、Web 组件处于后台时,网页 js 脚本还会继续执行,如需要暂停h5页面脚本执行,需要通过控制web组件的javaScriptAccess属性,当设置为false时,js脚本将停止执行

2、可以将Aweb页的Controller导出,在Bweb页使用,参考demo:

//Aweb页:
import { webview } from '@kit.ArkWeb';
import { router } from '@kit.ArkUI';

class webviewA{
  webviewController: webview.WebviewController = new webview.WebviewController();
  testFun(){
    this.webviewController.loadUrl('https://www.index.com')
  }
}
export let webviewControllerA = new webviewA()
@Entry
@Component
struct Index {
  build() {
    Column() {
      Text("pages/Index2")
        .onClick(() => {
          router.pushUrl({
            url: "pages/Index2"
          })
        })
      Web({ src: $rawfile('sample-mml.html'), controller: webviewControllerA.webviewController })
        .javaScriptProxy({
          object: this,
          name: 'messageHandlers',
          methodList: ['htmlCallBack'],
          controller: webviewControllerA.webviewController
        })
    }
  }
}

//Bweb页:
import { webview } from '@kit.ArkWeb';
import { webviewControllerA } from "./HDRichTextView"
import { router } from '@kit.ArkUI';

@Entry
@Component
struct Index2 {
  controller: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Text("testFun")
        .onClick(()=>{
          webviewControllerA.testFun()
        })
      Button("返回")
        .onClick(()=>{
          router.back()
        })
      Web({ src: $rawfile('scan.html'), controller: this.controller })
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
分享
微博
QQ
微信
回复
2024-12-25 17:11:45


相关问题
HarmonyOS 关于ListItem生命周期问题
481浏览 • 1回复 待解决
Dialog组件生命周期问题
1093浏览 • 1回复 待解决
HarmonyOS 页面生命周期问题
855浏览 • 1回复 待解决
HarmonyOS 首页组件生命周期问题
717浏览 • 1回复 待解决
HarmonyOS tab组件生命周期问题
745浏览 • 1回复 待解决
HarmonyOS 关于组件重绘生命周期函数
1044浏览 • 1回复 待解决
HarmonyOS Navigation生命周期问题
722浏览 • 1回复 待解决
Window窗口生命周期问题
1141浏览 • 1回复 待解决
HarmonyOS Navigation跳转组件生命周期
1921浏览 • 2回复 待解决
HarmonyOS NavDestination生命周期问题
667浏览 • 1回复 待解决
HarmonyOS 生命周期区别
1031浏览 • 1回复 待解决
HarmonyOS 弹框Dialog生命周期问题
1299浏览 • 1回复 待解决
HarmonyOS navigation主页面生命周期
1557浏览 • 1回复 待解决