当前位置: 首页 > 科技观察

简单了解eTs——专属浏览器(18)

时间:2023-03-22 16:37:32 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com,需求分析在上一篇本章,我们学习了鸿蒙远程模拟器的使用方法。本章我们将实现一次网络操作,从制作自己的专属浏览器开始。默认主页地址显示当前网址,具有刷新功能,可访问真实网站。二。控件介绍1.Web说明:该组件从APIVersion8开始支持,后续版本如有新内容添加,将对原版本内容单独标上上标。示例效果请以真机为准,目前IDE预览器不支持。提供能够显示网页的网络组件。当访问在线网页需要权限时,必须添加网络权限:ohos.permission.INTERNET。具体申请方式请参考权限申请声明。基本定义:interfaceWebInterface{(value:WebOptions):WebAttribute;}declareinterfaceWebOptions{src:string|资源;controller:WebController;}属性介绍declareclassWebAttributeextendsCommonMethod{javaScriptAccess(javaScriptAccess:boolean):WebAttribute;文件访问(文件访问:布尔值):WebAttribute;在线图像访问(在线图像访问:布尔值):WebAttribute;domStorageAccess(domStorageAccess:布尔值):WebAttribute;图像访问(图像访问:布尔值):WebAttribute;混合模式(混合模式:混合模式):WebAttribute;object:object,name:string,methodList:Array,controller:WebController}):WebAttribute;数据库访问(数据库访问:布尔值):WebAttribute;userAgent(userAgent:string):WebAttribute;//部分方法省略}javaScriptAccess:设置是否允许执行JS脚本,默认为true,表示允许执行。fileAccess:设置是否通过$rawfile(filepath/filename)在应用中开启对rawfile路径下文件的访问。默认为false,表示不启用。fileFromUrlAccess:设置是否允许在网页中通过JS脚本访问$rawfile(filepath/filename)的内容,默认为false,即不启用。imageAccess:设置是否允许自动加载图片资源,默认为true,表示允许。onlineImageAccess:设置是否允许从网络加载图片资源(通过HTTP和HTTPS访问的资源),默认为true,表示允许访问。domStorageAccess:设置是否启用文档对象模型存储接口(DOMStorageAPI)权限,默认为false,即不启用。mixedMode:设置是否允许加载超文本传输??协议(HTTP)和超文本传输??安全协议(HTTPS)的混合内容。默认为MixedMode.None,表示不允许加载HTTP和HTTPS的混合内容。databaseAccess:设置是否开启数据库存储API权限。默认为false,表示不启用。userAgent:设置用户代理。javaScriptProxy:将JavaScript对象注入到window对象中,在window对象中调用对象的方法。所有参数都不支持更新。WebEvents简介declareclassWebAttributeextendsCommonMethod{onPageBegin(callback:(event?:{url:string})=>void):WebAttribute;onPageEnd(callback:(event?:{url:string})=>void):WebAttribute;onProgressChange(callback:(event?:{newProgress:number})=>void):WebAttribute;onTitleReceive(回调:(事件?:{title:string})=>void):WebAttribute;onAlert(callback:(event?:{url:string,message:string,result:JsResult})=>boolean):WebAttribute;onConsole(callback:(event?:{message:ConsoleMessage})=>boolean):WebAttribute;onErrorReceive(回调:(事件?:{请求:WebResourceRequest,错误:WebResourceError})=>无效):WebAttribute;onFileSelectorShow(callback:(event?:{callback:Function,fileSelector:object})=>void):WebAttribute;}onPageBegin:webpage这个回调在loading开始的时候触发,只有在触发主框架的时候才会触发。加载iframe或frameset的内容时不会触发此回调。onPageEnd:该回调在网页加载完成时触发,仅在主框架中触发。onProgressChange:当网页加载进度发生变化时触发该回调。newProgress的取值范围是[0~100]。onTitleReceive:当网页文档的标题发生变化时触发该回调。onAlert:在H5页面调用alert()时触发该回调。onConsole:H5页面调用console()方法时的回调。onFileSelectorShow:H5页面input标签类型为flie时,点击按钮触发该回调。2.权限管理先看官方的权限定义:https://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/security/permission-list.md/。如需修改,请在Config.json中修改,其位置是在“module”下新建“reqPermissions”,如下:},{"name":"ohos.permission.CAMERA"},{"name":"ohos.permission.MEDIA_LOCATION"},{"name":"ohos.permission.WRITE_MEDIA"},{"name":"ohos.permission.READ_MEDIA"},{"name":"ohos.permission.INTERNET"}]以上是麦克风、摄像头、本地相册、媒体读写、网络访问权限的申请(个人使用)访问API)。3.UI/程序设计本章是在上一章的基础上进行的。如有疑问,请参考第十七章远程模拟器搭建。1、添加权限在文件结构中选择config.json,添加上网权限。2.使用简单代码加载Web控件:@Entry@ComponentstructWebComponent{web_controller:WebController=newWebController();build(){Column(){Web({src:'https://www.baidu.com/',controller:this.web_controller}).width('100%').height('100%')}.width('100%').height('80%')}}3.设计网页展示框引入变量:@Stateurl:string='https://www.baidu.com/'Web({src:this.url,controller:this.web_controller})使用TextInput组件实现输入。TextInput({placeholder:this.url}).height("5%").width("90%").fontSize(15)4.设计操作按钮这里的操作按钮设置包括刷新和加载按钮。Row(){Button("Refresh").onClick(()=>{this.web_controller.refresh();})Button("Load").onClick(()=>{this.web_controller.loadUrl({url:this.url})})}四、实际演示我的笔记本性能不好(目前被屏蔽),所以有点卡,这个不影响,在这个浏览器中可以输入网址和access,上面是远程模拟器的效果。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。