web-view实现app应用与网页的数据交互

这篇具有很好参考价值的文章主要介绍了web-view实现app应用与网页的数据交互。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、网页向app传递数据

1、在网页项目的index.html页面引入uniapp的js文件,引入成功之后就可以在事件里面使用uni.postMessage(网页项目是用vue框架写的)

<!-- uniapp 通信必须有的 -->
  <script type="text/javascript" src="https://unpkg.com/@dcloudio/uni-webview-js@0.0.2/index.js"></script>
  <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
  <script>
     document.addEventListener('UniAppJSBridgeReady', function() {  
      uni.getEnv(function(res) {  
          console.log('当前环境:' + JSON.stringify(res));  
      });  
    });
</script>

2、向app传递数据,可以直接写在点击事件里面

uni.postMessage({
   data: {
       action: 'scanCode'
   }
})

 二、app处理接收的数据并向网页传递数据

1、app项目中引入网页

 <web-view @message="handleMessage" ref="webview" :src="url"></web-view>

2、handleMessage接收网页传过来的数据

 handleMessage(event) {
     console.log("webView传递过来的消息:" + JSON.stringify(evt.detail.data))
     // #ifdef APP-PLUS
     const currentWebview = this.$parent.$scope.$getAppWebview().children()[0]
     let data = event.detail.data.length>0?event.detail.data[0]:''
     if (data&&data.action == "scanCode") {
          console.log('数据接收成功')
          // 进行处理
     }
     // #endif
 }

3、向网页中传递数据

开发的时候使用this.$scope一直Cannot read property ‘$getAppWebview‘ of undefined,后来查找了很多才找到,组件内要用this.$parent.$scope

--------------------------------------------------------------------------------------------------------------------------------

如果web-view是放在组件里面的用下面的方法去获取web-view窗口

//如果web-view就在当前页面里面,可以把$parent去掉
const currentWebview = this.$parent.$scope.$getAppWebview().children()[0]
currentWebview.evalJS(`scanCode(${JSON.stringify(_data)})`);

注意:如果页面没有初始化完成,可以加个定时等初始化完成在调用

var currentWebview = this.$scope.$getAppWebview() //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效
setTimeout(function() {
   wv = currentWebview.children()[0]
}, 1000); 

三、快速起服务测试

如果你想快速上手的话,可以直接建一个html页面起本地服务

1、把index.html放到文件夹下

2、打开文件夹 shift+鼠标右键,打开命令行

3、下载http-server: npm install http-server -g

4、开启本地服务器,输入 http-server 就可以了

4、关闭本地服务器,按快捷键 CTRL-C,当显示 ^Chttp-server stopped 的时候,就是关闭成功了

web-view实现app应用与网页的数据交互  

web-view实现app应用与网页的数据交互

web-view实现app应用与网页的数据交互

用http://192.168.0.8:8080 作为url引入到web-view里面

<web-view @message="handleMessage" ref="webview" src="http://192.168.0.8:8080 "></web-view>

index.html 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <title>网络网页</title>
    <style type="text/css">
      .btn {
        display: block;
        margin: 20px auto;
        padding: 5px;
        background-color: #007aff;
        border: 0;
        color: #ffffff;
        height: 40px;
        width: 200px;
      }
      .btn-red {
        background-color: #dd524d;
      }
      .post-message-section {
        visibility: hidden;
      }
    </style>
  </head>
  <body>
    <div class="post-message-section">
      <div class="btn-list">
        <button class="btn btn-red" type="button" id="postMessage">postMessage</button>
      </div>
    </div>
    <!-- uni 的 SDK -->
    <!-- uni.webview.1.5.4.js-->
    <script type="text/javascript" src="https://unpkg.com/@dcloudio/uni-webview-js@0.0.3/index.js"></script>
    <script type="text/javascript">
      // 待触发 `UniAppJSBridgeReady` 事件后,即可调用 uni 的 API。
      document.addEventListener('UniAppJSBridgeReady', function() {
        uni.postMessage({
            data: {
                action: 'message'
            }
        });
        uni.getEnv(function(res) {
            console.log('当前环境:' + JSON.stringify(res));
        });
        document.getElementById('postMessage').addEventListener('click', function() {
          uni.postMessage({
            data: {
              action: 'message'
            }
          });
        });
      });
    </script>
  </body>
</html>

四、参考链接

web-view | uni-app官网

uniapp app内this.$scope.$getAppWebview() 报错Cannot read property ‘$getAppWebview‘ of undefined_gaoqiang1112的博客-CSDN博客

完整的代码整理中....文章来源地址https://www.toymoban.com/news/detail-414738.html

到了这里,关于web-view实现app应用与网页的数据交互的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序中web-view网页中打开或返回小程序页面

    小程序中web-view网页中使用JSSDK提供的接口打开或返回小程序页面 1、引入 JSSDK 文件 2、判断是否在小程序环境 3、根据是否小程序环境,执行操作  或   开放标签H5跳转小程序

    2024年02月16日
    浏览(42)
  • uni-app web-view的使用

    在上一页点击需要跳转到app内置的浏览器里(app跳h5页面),uniapp提供了web-view 需要新建页面,在新页面里引用web-view,在新页面里才加上网址(h5) 1,在所需页面引入 1,在项目里(uni-app)运用(子传父) 3,html页面 https://gitee.com/dcloud/uni-app/raw/dev/dist/uni.webview.1.5.4.js

    2024年02月11日
    浏览(47)
  • 微信小程序通过web-view网页授权获取用户公众号OpenID

    第一步: 通过该地址 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfot=sandbox/index 获取到微信公众号测试号AppID与appsecret (测试公众号可以测试使用,个人公众号不允许使用。微信认证服务号可以使用,微信认证订阅号不可以使用)。 接口权限查看链接: https://developers.weix

    2024年02月08日
    浏览(76)
  • uni-app和web-view页面相互传参

    首先:这里说的是uni-app开发的APP项目,嵌入web-view页面,并进行相互传参,如果和您想了解的内容相符,请继续阅读。 一、说到web-view嵌入uni-app开发的APP,传参方面很多人首先会想到url传参。 这种方法是app向webview传参最简单的方式,但也存在许多弊端: 1.参数会被抓取,如

    2024年02月08日
    浏览(50)
  • uniapp 开发 APP 使用 web-view 引入H5 app与 h5 页面通信

    uniapp 可以同时兼容 APP 和 H5,但有时候有些功能在 APP 中实现不了而在 H5 中可以实现,就可以采用 web-view 的方式在 APP 模式下显示 H5 页面。但是 APP 和 H5 储存的参数是不能共享的,例如token,就涉及到 APP 与 H5 之间的参数传递。 H5 向 APP 传参:引入 webview.js ,调用 uni.postMes

    2024年02月13日
    浏览(45)
  • 微信小程序使用web-view跳转网页解决跳转出现空白或者被拦截问题

    首先,在小程序的页面布局文件中添加web-view组件的引用 给大家先画个草图大家就明白了 具体操作可以私信我,我手把手教你解决

    2024年04月23日
    浏览(59)
  • uniapp web-view 小程序内嵌H5 打开地图 唤起APP

      uniapp开发小程序内嵌H5的场景中,有需求如下:   在已知某个地点经纬度的情况下,可以在H5打开地图查看该地点的位置,以及能够唤起手机上的地图APP进行导航等操作。   此时uni.openLocation在唤起导航的时候,是打开在线的导航链接,且会由于小程序的限制无法正常

    2024年02月16日
    浏览(58)
  • uni-app开发微信小程序 web-view通讯

    最近开发了一个微信小程序嵌套vue页面 vue页面 有时候会使用到微信小程序的api 但是有的api他h5是不支持的  官方文档中提供的两种方法 @message 内嵌的h5页面不支持 Window的postMessage 在h5端使用没啥问题,这该死的uni-app页面不管怎么弄都会报那个window的错  还是我太菜了。。。

    2024年02月19日
    浏览(60)
  • uniapp web-view页面层级过高,想在web-view上层再加入按钮,采用plus.nativeObj.View实现。动态创建web-view解决切换src后丢失背景问题。

    需求 :有两个web-view页面,需要添加按钮,动态切换web-view的src进行页面切换 问题 :uniapp的web-view层级很高,通过positon的z-index无法将其他元素置于web-view页面上层 解决方式 :采用底层组件plus.nativeObj.View创建视图,该视图比web-view层级高,可在web-view上层添加 按钮,图片,矩

    2024年02月11日
    浏览(77)
  • 微信小程序实现支付宝支付——web-view实现

    由于使用到的微信小程序需要实现支付功能,而微信支付的申请手续较为繁琐,所以使用了支付宝支付,但是微信小程序正常情况不支持支付宝支付,所以我使用了web-view内嵌了支付宝的h5支付。 不会使用支付宝沙箱支付的同学可以看这篇文章Springboot支付宝沙箱支付 代码如下

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包