HarmonyOS webloadData不显示内容

import web_webview from '@ohos.web.webview';
import business_error, { BusinessError } from '@ohos.base';

interface ListItem {
  htmlData: string,
  controller?: web_webview.WebviewController
}

@Entry
@Component
struct WebviewDemo {
  @State List: ListItem[] = []
  @State isGetData: boolean = false;

  aboutToAppear(): void {
    setTimeout(() => {
      //模拟请求接口返回数据
      this.List = [
        {
          // htmlData: "<font color='#FF8012'><a style='color:#FF8012'>哈哈哈</a></font>",
          htmlData: '<font color=\'#FF8012\'><a href style=\'color:#FF8012\'>快去看看</a ></font>!',
        }
      ]
      this.List = this.List.map((v: ListItem, i: number) => {
        v.controller = new web_webview.WebviewController()
        return v
      })
      //加载web
      this.isGetData = true
    }, 1000)
  }

  // 封装loadData逻辑到方法中
  private loadDataToWeb(v: ListItem) {
    console.log('tag', JSON.stringify(v))
    v.controller?.loadData(v.htmlData, "text/html", "UTF-8");
  }

  build() {
    Column() {
      if (this.isGetData) {
        ForEach(this.List, (item: ListItem, index: number) => {
          Web({ src: '', controller: item.controller })
            .constraintSize({
              minHeight: 20,
              maxHeight: 50
            })
            .onControllerAttached(() => {
              this.loadDataToWeb(item)
            })
        })
      }
    }
  }
}
HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

若html中的富文本中带有注入#等特殊字符,建议使用带有两个空格的loadData函数,将baseUrl和historyUrl置为空,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#loaddata

参考示例如下:

import web_webview from '@ohos.web.webview';
import business_error, { BusinessError } from '@ohos.base';
import { i18n } from '@kit.LocalizationKit';

interface ListItem {
  htmlData: string,
  controller?: web_webview.WebviewController
}

@Entry
@Component
struct WebLoadDemo {
  @State List: ListItem[] = []
  @State isGetData: boolean = false;

  aboutToAppear(): void {
    let systemLanguage: string = i18n.System.getSystemLanguage(); // systemLanguage为当前系统语言
    console.log('systemLanguage---', systemLanguage)
    setTimeout(() => {
      //模拟请求接口返回数据
      this.List = [
        {
          // htmlData: "<font color='#FF8012'><a style='color:#FF8012'>哈哈哈</a></font>",
          htmlData: '<font color=\'#FF8012\'><a href style=\'color:#FF8012\'>快去看看</a ></font>!',
          // htmlData: '<html><body bgcolor=\"white\">Source:<pre>source</pre></body></html>',
        }
      ]
      this.List = this.List.map((v: ListItem, i: number) => {
        v.controller = new web_webview.WebviewController()
        return v
      })
      //加载web
      this.isGetData = true
    }, 1000)
  }

  // 封装loadData逻辑到方法中
  private loadDataToWeb(v: ListItem) {
    console.log('jimjay', JSON.stringify(v))
    v.controller?.loadData(v.htmlData, "text/html", "UTF-8", " ", " ");
  }

  build() {
    Column() {

      if (this.isGetData) {
        ForEach(this.List, (item: ListItem, index: number) => {
          Web({ src: '', controller: item.controller })
            .constraintSize({
              minHeight: 20,
              maxHeight: 50
            })
            .onControllerAttached(() => {
              this.loadDataToWeb(item)
            })
        })
      }
    }
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 输入框不显示内容
90浏览 • 1回复 待解决
HarmonyOS CustomDialogController 不显示
313浏览 • 1回复 待解决
HarmonyOS 应用图标不显示
40浏览 • 1回复 待解决
HarmonyOS web组件alert不显示
656浏览 • 1回复 待解决
HarmonyOS 应用使用iconfont不显示
51浏览 • 1回复 待解决
HarmonyOS 网络图片加载不显示
133浏览 • 1回复 待解决
HarmonyOS web加载页面图片不显示
527浏览 • 1回复 待解决
HarmonyOS dialog调用open方法,不显示
354浏览 • 1回复 待解决
PopupDialog 不显示怎么回事?
7491浏览 • 2回复 待解决
harmony surfaceProvider绘制不显示问题
10220浏览 • 4回复 待解决
harmonyos-webview-布局增加load不显示
6688浏览 • 3回复 待解决
HarmonyOS Web组件加载片段时候不显示
240浏览 • 1回复 待解决
HarmonyOS 使用 api11 地图不显示
552浏览 • 1回复 待解决
HarmonyOS Image组件网络图片不显示
441浏览 • 1回复 待解决
HarmonyOS web系统组件写css不显示
293浏览 • 1回复 待解决
HarmonyOS 自定义弹窗封装后不显示
390浏览 • 1回复 待解决