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

徐州手机模板建站泰安市大众人才网

徐州手机模板建站,泰安市大众人才网,小企业网页制作,学校网站建设方案及报价一、应用侧调用前端页面函数 应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数。在下面的示例中#xff0c;点击应用侧的“runJavaScript”按钮时#xff0c;来触发前端页面的htmlTest()方法。 前端页面代码。 !-- index.html -- !DOCTYPE ht… 一、应用侧调用前端页面函数 应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数。在下面的示例中点击应用侧的“runJavaScript”按钮时来触发前端页面的htmlTest()方法。 前端页面代码。 !-- index.html -- !DOCTYPE html html body scriptfunction htmlTest() {console.info(JavaScript Hello World! );} /script /body /html应用侧代码。 // xxx.ets import web_webview from ohos.web.webview;Entry Component struct WebComponent {webviewController: web_webview.WebviewController new web_webview.WebviewController();build() {Column() {Web({ src: $rawfile(index.html), controller: this.webviewController})Button(runJavaScript).onClick(() {this.webviewController.runJavaScript(htmlTest());})}} }二、前端页面调用应用侧函数 开发者使用Web组件将应用侧代码注册到前端页面中注册完成之后前端页面中使用注册的对象名称就可以调用应用侧的函数实现在前端页面中调用应用侧方法。 注册应用侧代码有两种方式一种在Web组件初始化使用调用使用javaScriptProxy()接口。另外一种在Web组件初始化完成后调用使用registerJavaScriptProxy()接口。 在下面的示例中将test()方法注册在前端页面中 该函数可以在前端页面触发运行。 javaScriptProxy()接口使用示例如下。 // xxx.ets import web_webview from ohos.web.webview;Entry Component struct WebComponent {webviewController: web_webview.WebviewController new web_webview.WebviewController();// 声明需要注册的对象testObj {test: () {return ArkTS Hello World!;}}build() {Column() {// web组件加载本地index.html页面Web({ src: $rawfile(index.html), controller: this.webviewController})// 将对象注入到web端.javaScriptProxy({object: this.testObj,name: testObjName,methodList: [test],controller: this.webviewController})}} }应用侧使用registerJavaScriptProxy()接口注册。 // xxx.ets import web_webview from ohos.web.webview;Entry Component struct Index {webviewController: web_webview.WebviewController new web_webview.WebviewController();testObj {test: (data) {return ArkUI Web Component;},toString: () {console.info(Web Component toString);}}build() {Column() {Button(refresh).onClick(() {try {this.webviewController.refresh();} catch (error) {console.error(Errorcode: ${error.code}, Message: ${error.message});}})Button(Register JavaScript To Window).onClick(() {try {this.webviewController.registerJavaScriptProxy(this.testObj, objName, [test, toString]);} catch (error) {console.error(Errorcode: ${error.code}, Message: ${error.message});}})Web({ src: $rawfile(index.html), controller: this.webviewController })}} }说明 使用registerJavaScriptProxy()接口注册方法时注册后需调用refresh()接口生效。 index.html前端页面触发应用侧代码。 !-- index.html -- !DOCTYPE html html body button typebutton onclickcallArkTS()Click Me!/button p iddemo/p scriptfunction callArkTS() {let str objName.test();document.getElementById(demo).innerHTML str;console.info(ArkTS Hello World! : str);} /script /body /html三、建立应用侧与前端页面数据通道 前端页面和应用侧之间可以用createWebMessagePorts()接口创建消息端口来实现两端的通信。 在下面的示例中应用侧页面中通过createWebMessagePorts方法创建消息端口再把其中一个端口通过postMessage()接口发送到前端页面便可以在前端页面和应用侧之间互相发送消息。 应用侧代码。 // xxx.ets import web_webview from ohos.web.webview;Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController();ports: web_webview.WebMessagePort[];State sendFromEts: string Send this message from ets to HTML;State receivedFromHtml: string Display received message send from HTML;build() {Column() {// 展示接收到的来自HTML的内容Text(this.receivedFromHtml)// 输入框的内容发送到htmlTextInput({placeholder: Send this message from ets to HTML}).onChange((value: string) {this.sendFromEts value;})Button(postMessage).onClick(() {try {// 1、创建两个消息端口。this.ports this.controller.createWebMessagePorts();// 2、在应用侧的消息端口(如端口1)上注册回调事件。this.ports[1].onMessageEvent((result: web_webview.WebMessage) {let msg Got msg from HTML:;if (typeof(result) string) {console.info(received string message from html5, string is: ${result});msg msg result;} else if (typeof(result) object) {if (result instanceof ArrayBuffer) {console.info(received arraybuffer from html5, length is: ${result.byteLength});msg msg lenght is  result.byteLength;} else {console.info(not support);}} else {console.info(not support);}this.receivedFromHtml msg;})// 3、将另一个消息端口(如端口0)发送到HTML侧由HTML侧保存并使用。this.controller.postMessage(__init_port__, [this.ports[0]], *);} catch (error) {console.error(ErrorCode: ${error.code}, Message: ${error.message});}})// 4、使用应用侧的端口给另一个已经发送到html的端口发送消息。Button(SendDataToHTML).onClick(() {try {if (this.ports this.ports[1]) {this.ports[1].postMessageEvent(this.sendFromEts);} else {console.error(ports is null, Please initialize first);}} catch (error) {console.error(ErrorCode: ${error.code}, Message: ${error.message});}})Web({ src: $rawfile(xxx.html), controller: this.controller })}} }前端页面代码。 !--xxx.html-- !DOCTYPE html html headmeta nameviewport contentwidthdevice-width, initial-scale1.0titleWebView Message Port Demo/title /head bodyh1WebView Message Port Demo/h1divinput typebutton valueSendToEts onclickPostMsgToEts(msgFromJS.value);/br/input idmsgFromJS typetext valuesend this message from HTML to ets/br//divp classoutputdisplay received message send from ets/p /body script var h5Port; var output document.querySelector(.output); window.addEventListener(message, function (event) {if (event.data __init_port__) {if (event.ports[0] ! null) {h5Port event.ports[0]; // 1. 保存从ets侧发送过来的端口h5Port.onmessage function (event) {// 2. 接收ets侧发送过来的消息.var msg Got message from ets:;var result event.data;if (typeof(result) string) {console.info(received string message from html5, string is: ${result});msg msg result;} else if (typeof(result) object) {if (result instanceof ArrayBuffer) {console.info(received arraybuffer from html5, length is: ${result.byteLength});msg msg lenght is  result.byteLength;} else {console.info(not support);}} else {console.info(not support);}output.innerHTML msg;}}} }) // 3. 使用h5Port往ets侧发送消息. function PostMsgToEts(data) {if (h5Port) {h5Port.postMessage(data);} else {console.error(h5Port is null, Please initialize first);} } /script /html
http://www.yutouwan.com/news/336035/

相关文章:

  • 绿地建设集团网站wordpress 可以上传存储附件
  • 站内推广有哪些方式网站如何做友情链接
  • 阿里巴巴网站威海哪里做做设备租赁的网站
  • 网站维护推广wordpress新建查询跳转
  • 重庆教育建设集团有限公司网站竞价网站策划
  • 网站开发分析模板asp.net 移动网站开发
  • 乐山乐人网站建设公司企业网站建设费现金流科目
  • 做图片素材的网站有哪些自做跨境电商网站收款
  • 推广 广州网站建设公司wordpress使用相对路径
  • 凡高网站建设电商平台网站建设策划书
  • 炒股网站怎么做做招商网站
  • 济南建设网站制作优化分析潍坊网站建设求职简历
  • 长沙建网站设计网页设计网站的分析
  • php网站漂浮广告代码wordpress分类搜索
  • 防水补漏在哪个网站做宣传好辽宁省营商环境建设局网站
  • 简单的网站php开发教程网站的上一页怎么做
  • 网站开发费属于研发费用吗开源免费建站程序用的最多的
  • 网站后台查找软件杭州企业网站设计制作
  • 企业网站优化的三层含义wordpress 自适应菜单
  • 本地网站搭建百度竞价点击软件奔奔
  • 哪里有制作网站系统网页宣传广告怎么做
  • 厦门专业网站建设建站公需科目在哪个网站做
  • 列车营销网站怎么做精品网站建设费用磐石网络名气
  • 广水网站建设网站备案承诺书填写
  • 定陶区城乡建设局网站雅安建设局网站
  • 禅城容桂网站制作云平台开发
  • 网站备案程序本地建站工具
  • 淘宝网站建设好评语建设垂直网站需要哪些流程图
  • 网站建设竞标ppt网页设计属于ui范围吗
  • cms网站建设教程珠海低价网站建设