首页 > 其他分享 >ArkWeb页面加载与浏览记录导航 - 基础操作

ArkWeb页面加载与浏览记录导航 - 基础操作

时间:2024-10-18 15:47:02浏览次数:1  
标签:Web src ArkWeb controller rawfile 加载 页面

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。

简介

在ArkWeb框架中,页面加载和浏览记录导航是开发者经常需要使用的功能。通过掌握这些功能,您可以轻松地加载Web页面、管理浏览记录,并提升用户体验。本文将介绍ArkWeb框架中页面加载和浏览记录导航的基础操作。

页面加载

加载网络页面

您可以使用两种方式加载网络页面:

  • 使用src属性: 在Web组件的src属性中指定网络页面的URL,例如:
Web({ src: "https://www.example.com" });
  • 使用loadUrl方法: 在Web组件创建后,使用loadUrl方法加载网络页面,例如:
Web({ src: $rawfile("local.html") })
    .onControllerAttached(() => {
        this.controller.loadUrl("https://www.example.com");
    });

您可以使用loadUrl方法在Web组件创建后动态更改加载的页面。

加载本地页面

您可以使用两种方式加载本地页面:

  • 使用$rawfile: 在Web组件的src属性中使用$rawfile函数加载本地页面,例如:
Web({ src: $rawfile("local.html") });
  • 使用loadUrl方法: 在Web组件创建后,使用loadUrl方法加载本地页面,例如:
Web({ src: $rawfile("local.html") })
    .onControllerAttached(() => {
        this.controller.loadUrl($rawfile("another_local.html"));
    });

您可以使用loadUrl方法在Web组件创建后动态更改加载的页面。

加载HTML文本数据

您可以使用loadData方法加载HTML文本数据,例如:

Web({ src: $rawfile("local.html") })
    .onControllerAttached(() => {
        this.controller.loadData("<html><body>Hello, World!</body></html>", "text/html", "UTF-8");
    });

您需要指定数据类型、编码格式和内容。

加载模式

ArkWeb框架支持两种加载模式:

  • 同步渲染模式: 默认模式,Web渲染与系统组件一起进行。
  • 异步渲染模式: Web组件作为独立节点渲染,性能更高,但受限于最大尺寸。
    您可以使用renderMode属性设置加载模式,例如:
Web({ src: "https://www.example.com", renderMode: RenderMode.ASYNC_RENDER });

加载进度监听

您可以使用onProgressChange接口监听页面加载进度,例如:

Web({ src: "https://www.example.com" })
    .onProgressChange((event) => {
        console.log("Loading progress: " + event.newProgress);
    });

浏览记录导航

前进和后退

您可以使用forward和backward方法进行页面前进和后退操作,例如:

Web({ src: "https://www.example.com" })
    .onControllerAttached(() => {
        this.controller.forward(); // 前进
        this.controller.backward(); // 后退
    });

您可以使用accessForward和accessBackward方法检查是否存在前进或后退的历史记录,例如:

Web({ src: "https://www.example.com" })
    .onControllerAttached(() => {
        if (this.controller.accessForward()) {
            this.controller.forward(); // 存在前进历史记录,可以前进
        }
        if (this.controller.accessBackward()) {
            this.controller.backward(); // 存在后退历史记录,可以后退
        }
    });

示例代码

以下示例代码展示了如何加载网络页面、加载本地页面和加载HTML文本数据,以及如何进行浏览记录导航:

import { webview } from '@ohos.web.webview';
@Entry
@Component
struct WebComponent {
    controller: webview.WebviewController = new webview.WebviewController();
    build() {
        Column() {
            // 加载网络页面
            Web({ src: "https://www.example.com" });
            // 加载本地页面
            Web({ src: $rawfile("local.html") });
            // 加载HTML文本数据
            Web({ src: $rawfile("local.html") })
                .onControllerAttached(() => {
                    this.controller.loadData("<html><body>Hello, World!</body></html>", "text/html", "UTF-8");
                });
            // 浏览记录导航
            Web({ src: "https://www.example.com" })
                .onControllerAttached(() => {
                    this.controller.forward(); // 前进
                    this.controller.backward(); // 后退
                });
        }
    }
}

总结

通过掌握ArkWeb框架中页面加载和浏览记录导航的基础操作,您可以轻松地加载Web页面、管理浏览记录,并提升用户体验,希望能够帮到您,嘿嘿。

标签:Web,src,ArkWeb,controller,rawfile,加载,页面
From: https://www.cnblogs.com/samex/p/18474399

相关文章

  • ArkWeb智能防跟踪与广告过滤 - 保护用户隐私
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。简介华为鸿蒙HarmonyOSNext系统的Ar......
  • ArkWeb页面跳转与跨应用导航 - 高级应用
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。简介页面跳转是Web应用中常见的操作,......
  • Create-react-app创建的项目打包后页面空白的解决方法
    当我们使用create-react-app脚手架创建一个react项目之后,等到项目开发完成想要打包部署时会发现,通过npmrunbuild命令打包后的项目在浏览器端访问时会出现页面空白的情况。解决方法:此类问题一般有两种解决方法,其中第一种也是最常见的,当我们打开浏览器控制台时会发现,当首页空白......
  • ROS2安装turtlebot4机器人,运行ign gazebo仿真加载机器人模型(用于评测catorgrapher算法
    前言本人最近做了一个任务,需要评测catorgrapher算法的精度,这个过程中需要使用到ros2仿真过程中机器人的真实轨迹和估计轨迹,在/odom和/sim_ground_true_pose话题中提取到机器人的真实轨迹,同时改变catorgraper的源码,在启动catorgraper算法后产生tum格式轨迹文件,最后使用evo进行......
  • 微信小程序 触底加载更新 虚拟列表渲染
    <wxsmodule='filter'>varincludesList=function(list,currentIndex){if(list){returnlist.indexOf(currentIndex)>-1}}module.exports.includesList=includesList;</wxs><scroll-viewstyle='......
  • Vue3 - 详细实现移动端H5网页调用摄像头拍照功能,微信公众号网页h5页面打开本地摄像头
    前言PC网站端,请访问这篇文章。在vue3手机移动端开发中,详解H5页面/微信公众号网页调用浏览器摄像头并拍照完整示例,在手机浏览器上开启摄像头并拍照上传服务器或保存到本地功能(实时预览使用图片临时路径或base64数据),切换转换前置摄像头与后置摄像头,vue3手机H5打开摄像......
  • 模板网站可以修改内容吗?网站修改资料页面模板?
    模板网站通常提供了多种方式让用户自定义和修改内容,具体方法取决于所使用的模板平台或工具。以下是几种常见的修改方式:文本编辑:大多数模板网站允许用户直接在页面上编辑文本内容,如标题、段落等。图片更换:用户可以通过上传自己的图片来替换模板中的默认图片。颜色调整:一些高级......
  • dockerfile中nuget源加载失败Retrying 'FindPackagesByIdAsync' for source 'xxx'
    问题描述:最近jenkins打包总是提示微软源加载不到Retrying'FindPackagesByIdAsync'forsource'https://api.nuget.org/v3-flatcontainer/microsoft.extensions.primitives/index.json'.Anerroroccurredwhilesendingtherequest.解决方案:dockerfile中添加国内源,改用华......
  • 模板网站如何修改代码?修改织梦网站页面模板?
    修改模板网站的代码通常涉及以下几个步骤:备份原始文件:在开始任何修改之前,确保备份原始文件。这可以帮助您在遇到问题时恢复到初始状态。了解文件结构:浏览模板文件夹,了解其结构。常见的文件夹包括 css、js、img 和 html 文件。查看 README 或其他文档,了解模板的......
  • Android为页面添加水印
    来源:https://blog.csdn.net/fantasy_lin_/article/details/97651171为了能够方便地在任意页面上加水印,所以应该采取用Java代码来实现,而不是在XML布局文件里面写。大概思路是,首先获取当前页面的底层布局,然后在布局最上层添加一个全屏的带有水印的FrameLayout布局。这个全屏的带有水......