鸿蒙——Web组件加载h5

Web组件用于在应用程序中显示Web页面内容,为开发者提供页面加载、页面交互、页面调试等能力

  • 页面加载:Web组件提供基础的前端页面加载的能力,包括加载网络页面、本地页面、Html格式文本数据。

  • 页面交互:Web组件提供丰富的页面交互的方式,包括:设置前端页面深色模式,新窗口中加载页面,位置权限管理,Cookie管理,应用侧使用前端页面JavaScript等能力。

  • 页面调试:Web组件支持使用Devtools工具调试前端页面。

  • Web组件需要 src和controller两个属性:

  • src: 可以是网络地址 、HTML格式的富文本数据、也可以是来自鸿蒙本身的沙箱或者资源原生地址

    controller: 用来管控Web组件的一些行为 包括后续的通信。

1.1利用 Web 组件 + RichText 组件实现隐私政策界面前端 html 文件的展示?

利用webView加载rawfile中的html文件: -> 混合式开发(前端网页 + 端开发)

webViewController:webview.WebviewController = new webview.WebviewController()

Web({
     src:$rawfile('index.html'),
     //$rawfile()方法来读取html文件的路径
      controller:this.webViewController
 })


//调用loadUrl()接口变更网页      
this.webviewController.loadUrl('www.example1.com');

 注意:Web第二个参数controller不能省略,必选
src: 可以指向本地的一个文件,也可以指向网络的一个html文件,如果是网络文件,则需要在src/main/module.json5 配置INTERNET网络访问权限
预览器不支持加载网页功能,需要到模拟器或者真机中验证功能结果

1.2 利用 RichText 实现富文本的展示?

  • 利用html结构实现富文本在真机next系统上的兼容处理。
  • 在next版本中直接把富文本字符串交给RichText显示时,在真机和模拟器上文字显示会特别的小,需要把需要显示的富文本字符串使用一段html结构,并且使用一个<div style="font-44size:34px"></div> 来包裹这段富文本字符串才能显示正常。

 Column() {
          Scroll() {
           // 富文本
            // RichText(this.question.answer)
            RichText(`
                      <html>
                      <body>
                        <div style="font-size:54px">${this.question.answer}</div>
                      <body>
                      </html>
                      `)
          }
          .padding((15))
          .layoutWeight(1)
          .onScroll((xOffset: number, yOffset: number) => {
            console.log('mylog->xOffset', xOffset + ' ' + yOffset)
          })
          .onScrollStop(() => {
            console.log('mylog->Scroll Stop')
          })
}.layoutWeight(1)

1.3 WebView单词用法高亮显示?

如何在鸿蒙原生应用中加载html 以及如何执行html中的一个js方法?

  • 利用WebView加载html文件,当html文件加载完成后会触发onPageEnd方法
  • 在onPageEnd方法中利用WebViewController对象中的runJavaScript方法 来调用html中的 定义的js方法 writeWord
 webviewCtrl: webview.WebviewController = new webview.WebviewController()
  Web({
        src: $rawfile('word.html'),
        controller: this.webviewCtrl
  })
        .onPageEnd(() => {
             //   当word.html网页加载完成之后,要执行这个网页中定义的js方法 writeWord
          this.webviewCtrl.runJavaScript(`writeWord(\`${this.currentCode}\`)`)
        })
h5:
 
 <style>
        word {
          font-size: 16px;
          line-height: 1.6
        }

    </style>
</head>
<body>
<h1>heiio</h1>
<pre><code></code></pre>
<script>
    function writeWord(str) {
      const el = document.querySelector('word');
      el.innerHTML = hljs.highlightAuto(str).value;
    }

</script>

参考:

【连载】纯鸿蒙应用安全开发指南-Web组件安全

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
优化Web H5页面的首屏加载速度可以从以下几个方面入手: 1. 减少HTTP请求数量:减少页面中的HTTP请求可以显著提高性能。可以通过合并CSS、JS文件、压缩图片等方式,减少HTTP请求数量。 2. 使用缓存:将静态资源(例如图片、CSS和JS等)缓存在本地,可以大幅度减少HTTP请求。可以通过设置HTTP响应头中的缓存策略,让客户端缓存这些静态资源。 3. 压缩文件大小:减小HTML、CSS和JS文件的大小可以减少加载时间,提高性能。可以使用压缩工具压缩这些文件,减小文件大小。 4. 延迟加载:将不必要的资源(例如图片、视频等)延迟加载,可以减少页面的加载时间。可以使用LazyLoad等工具来实现延迟加载。 5. 预加载:将可能需要的资源(例如下一页的内容、用户可能要点击的按钮等)预加载到本地,可以提高用户体验。 6. 减少DOM操作:减少DOM操作可以减少页面的重绘和回流,提高性能。可以将多次DOM操作合并为一次操作,使用事件委托等方式来减少DOM操作。 7. 合理设置CSS和JS:将CSS和JS文件放在页面的头部,可以提高页面的加载速度。同时,可以将CSS和JS文件进行异步加载,以避免阻塞页面的加载。 总之,通过以上的方法可以优化Web H5页面的首屏加载速度,提高用户体验。需要根据实际页面的情况,综合考虑以上方面进行优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值