当前位置: 首页 > news >正文

HarmonyOS NEXT——【鸿蒙原生应用加载Web页面】

鸿蒙客户端加载Web页面:

在鸿蒙原生应用中,我们需要使用前端页面做混合开发,方法之一是使用Web组件直接加载前端页面,其中WebView提供了一系列相关的方法适配鸿蒙原生与web之间的使用。

效果

web页面展示:

Column() {
  //this.homeOtherLayoutCJModel.Url
  Web({ src: CommonConstants.ZXUrl, controller: this.controller })
    .height('100%')
    .width('100%')
    .nestedScroll({
      scrollForward: NestedScrollMode.SELF_FIRST,
      scrollBackward: NestedScrollMode.SELF_FIRST,
    })
    .layoutMode(WebLayoutMode.FIT_CONTENT)
    .javaScriptAccess(true)
    .overviewModeAccess(true)
    .multiWindowAccess(true)// 设置是否开启多窗口权限
    .onPageBegin(() => {
    })
    .onWindowNew((event) => {
      Logger.debug('poll', JSON.stringify(event))
      if (event.isAlert == false && event.isUserTrigger) {
        JumpTool.jumpToWebview(event.targetUrl, '新闻详情')
      }
      event.handler.setWebController(null)
    })
}

跳转到WebPage页面

// 跳转webview
static jumpToWebview(url: string, title: string = '') {
  router.pushUrl({
    url: 'pages/WebPage',
    params: {
      url: url,
      title: title
    }
  })
}

WebPage页面代码:

//pages/WebPage.ets
import web_webview from '@ohos.web.webview'
import router from '@ohos.router'
import NavigationHeader from '../view/NavigationHeader'
import { WindowUtils } from '../common/constants/WindowUtils'
​
​
@Entrywe
@Component
struct WebPage {
  @StorageLink("statusBarHeight") headerHeight: number = 0
  controller: web_webview.WebviewController = new web_webview.WebviewController()
  params: RouterParamsClass = {} as RouterParamsClass
​
  aboutToAppear() {
    this.params = router.getParams() as RouterParamsClass
  }
​
  build() {
    Column() {
      NavigationHeader({
        text: this.params?.title ?? '', isWebPage: true, backAction: () => {
          let backwardIsWeb = this.controller.accessBackward()
          if (backwardIsWeb) {
          //判断如果已经是最外层web,才返回到客户端页面,否则只返回一层web页面
            this.controller.backward()
          } else {
            WindowUtils.getRouter().back()
          }
        }
      })
      Web({ src: this.params.url, controller: this.controller })
        .backgroundColor(Color.White)
        .overviewModeAccess(false)
        .layoutWeight(1)
    }
  }
}
​
class RouterParamsClass {
  url: string = ''
  title: string = ''
}

嵌套web页面效果:

相关文章:

  • ThreadLocal与Cookie + Session?
  • Audacity Nyquist插件开发:定义输入框和获取用户输入
  • Unity 运行时更换Animator状态里的动画剪辑
  • Docker部署minio,SSL证书问题与两个解决方案
  • 【数据结构】栈 与【LeetCode】20.有效的括号详解
  • Spring Boot分布式项目实战:装饰模式的正确打开方式
  • 【网络】:应用层 —— HTTP协议
  • CloudCompare (CC)中ccHObject详解
  • 故障扭曲棱镜反射照片效果ps特效滤镜样机 Distorted Mirror Poster Effect
  • 日志打印级别定义
  • 高精度除法
  • SPI通信协议
  • uvm sequence
  • zsh安装以及安装配置oh-my-zsh安装zsh-autosuggestionszsh-syntax-highlighting
  • 条件变量与生产者-消费者模型
  • Unix/Linux 系统下的文件权限
  • D3524 PWM控制芯片详解:特性、参数与典型应用
  • arm非对齐访问编译器选项
  • vue(1-45)
  • GitHub美化个人主页3D图表显示配置操作
  • 湖北新闻网官方网站/网络营销公司名字大全
  • 营销策略是什么意思/免费seo营销软件
  • 比价网站开发毕业论文/网站建设运营
  • wordpress forum/seo站长综合查询
  • 自己做网站写文章/北京网络优化推广公司
  • 免费软件无线看破解版/烟台seo