android rn 和webview,RN Webview与Web的通信与调试

React Native Version:0.51

RN 在 0.37 版本中加入了WebView功能,所以想要在使用WebView,版本必须>=0.37,发送的 message 只能是字符串,所以需要将其他格式的数据转换成字符串,在接收到后再转换回去,其实直接用JSON.stringify和JSON.parse就可以

加载 html

source属性用于指定加载的 html,可以加载在线的页面,也可以加载本地的页面,代码如下:

// 加载线上页面

source={{uri: 'http://www.mi.com'}}

/>

// 加载本地html文件

source={require('../src/html/index.html')}

/>

注意 ⚠️

在 RN 中可以加载 WebView,但是无法调试,也不能使用 alert 来验证代码 js 代码是否运行成功,只能通过往 html 写入东西(innerHTML)来验证 js 是否运行成功

WebView 与 html 的通信

webview 发送信息到 html

WebView 给 html 发送信息需要使用postMessage,而 html 接收 RN 发过来的信息需要监听message事件,代码如下:

// RN

class WebViewExample extends Component {

onLoadEnd = () => {

this.refs.webview.postMessage = 'this is RN msg'

}

render() {

return (

ref="webview"

source={require('../html/index.html')}

onLoadEnd={this.onLoadEnd}

/>

)

}

}

export default WebViewExample

// web

window.document.addEventListener('message', function(e) {

const message = e.data

})

这里需要注意一点

postMessage需要在 webview 加载完成之后再去 post,如果放在commponentWillMount里由于页面没有加载完成就 post 信息,会导致 html 端无法监听到 message 事件。

html 发送信息到 webview

// RN

class WebViewExample extends Component {

handleMessage = e => {

const message = e.nativeEvent.data

}

render() {

return (

ref="webview"

source={require('../html/index.html')}

onMessage={e => this.handleMessage(e)}

/>

)

}

}

export default WebViewExample

// web

window.postMessage('this is html msg')

debug

RN 中 debug webview 和安卓开发中看起来是差不多的,连接好设备后,在 chrome 中输入

chrome://inspect

就可以看到安卓设备上正在运行的 webview 了,点击inspect就会开启一个调试页面,就可以进行 debug 了,RN 似乎默认开启了 debug 调试,直接就可以看到 webview 中输出的信息。

abc62e13c12d

webview_debug.png

但是我发现我打开的调试界面是一个错乱的界面,不知道为什么,无奈。

abc62e13c12d

debug界面.jpeg

注意 ⚠️

这里需要注意一点的,由于安卓版本的差异,所以内部的 webview 对 js 的支持程度也不同,为了保证兼容性,如果使用了 ES6,请转成 ES5,否则会报错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html 物流状态,使用css实现物流进度的样式的实例代码

效果:css样式:ul li {list-style: none;}.package-status {padding: 18px 0 0 0}.package-status .status-list {margin: 0;padding: 0;margin-top: -5px;padding-left: 8px;list-style: none;}.package-status .status-list>li {border-left: 2px so…

点钞机语音怎么打开_原来微信语音一样能转发? 居然还有人不知道

微信怎么把语音转发给别人?原来这个简单啊,微信作为一款我们最常用的社交工具,无论是生活还是工作过程中,我们都能够用到微信。那么大家知道微信怎么把语音转发给别人吗?有的人肯定就会回答说:"跟转发…

圆与平面的接触面积_视频:5.3RJ六年级上册圆的面积例题+习题讲解

一、什么是面积物体表面的大小就是它们的面积。长方形的面积长宽正方形的面积边长边长平行四边形的面积底高三角形的面积底高2梯形的面积(上底下底)高2圆所占平面的大小叫做圆的面积。二、剪切法推导圆的面积把圆转化成近似的长方形,当平均分成的份数越来越多&#…

html css js编程顺序,html css js先学哪个呢?

前端开发三剑客为 HTML、CSS、JavaScript。这三门语言的掌握对前端开发程序员来说是必须的,但有不少同学不懂得先学习哪一门语言。那么这篇文章 w3cschool 小编就来为你解答一下 HTML、CSS、JavaScript 先学哪个的问题。首先需要学习的是 HTML,HTML 是开…

Centos下载地址

下载地址: 从阿里镜像网站上下载 http://mirrors.aliyun.com/centos/ 建议选用Centos 6.x windows电脑配置:至少4G内存,i5处理器或以上。 Linux虚拟机分配:内存128M~1024M,cpu 1核心,硬盘8g即可。

实现连麦_微信重磅更新,视频号直播连麦打赏美颜上线,新增巨大流量入口

12月23日晚,微信迎来重大改版!在最新7.0.20版本的微信中,视频号大招不断,不仅上线了连麦功能,支持美颜瘦脸、打赏等功能。此外,微信还给视频号开放了两个重大入口,包括微信个人名片和“发现”ta…

VMware Workstation 网络设置解释三种

一、NAT Network Address Translation,网络地址转换,NAT模式是比较简单的实现虚拟机上网的方式,NAT模式的虚拟机时通过物理电脑上网和交换数据的。 在NAT模式下,虚拟机的网卡连接到物理机的VMware上,此时VMware软件的…

cuda 核函数 for循环_【CUDA 基础】4.4 核函数可达到的带宽

Abstract: 本文通过矩阵转置这一个例子,调整,优化核函数,使其达到最优的内存带宽Keywords: 带宽,吞吐量,矩阵转置开篇废话下面是废话,与本文知识无关,可以直接跳到下面红字处开始本文知识的学习…

小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容

本来呢,我是有专门整理小程序恶心bug的文章的,每次只要添加汇总就好, 但是呢,鉴于这个问题的恶心程度,所以我把他单独拿出来说了。 ——————————————--------------------------------------------------产…

二分查找和二叉查找树

2019独角兽企业重金招聘Python工程师标准>>> 1 二分查找 算法思想: 二分查找要求元素排列有序。首先,假设表中元素是按升序排列,将数组中间位置的元素与查找关键字比较,如果两者相等,则查找成功&#xff1…

台式计算机技术方案,2017年4月自考02316计算机应用技术真题及答案

本文提供的是2017年4月自考02316计算机应用技术真题及答案,真题不仅能帮助考生复习巩固学到的知识,还能让考生了解以往考试难易程度,真正掌握一套真题那么考试也不用担心了。要考试的你一定要多多练习啊。2017 年 4 月高等教育自学考试全国统…

理解lua中 . : self

文章目录[点击展开](?)[] 前言点号定义和调用冒号定义和冒号调用运行结果相互调用相互调用运行结果总结前言 在LUA中,经常可以看到:. self,今天在CSDN上看到一篇博客写的很清楚,转载过来 原文出处:http://blog.csdn.n…

SecureCRT配置

一、下载 路径:http://www.pc6.com/softview/softview_24396.html 里面有破解教程 二、配置 1、选择仿真环境养眼的绿色字体黑色背景配置,选择 traditional option->Global options –>default session -> edit default settings -> 修改…

怎么用计算机弹c哩c哩,计算器音乐c哩c哩乐谱 | 手游网游页游攻略大全

发布时间:2016-06-29铲子骑士乐谱有什么用 铲子骑士乐谱卖不了怎么办.不少铲子骑士玩家收集了一些乐谱,那么这些乐谱功能是什么呢?下面99单机网小编给大家介绍铲子骑士乐谱有什么用 铲子骑士乐谱卖不了怎么办. 乐谱可以卖钱,还可以更换游戏中的音乐 ...标签&#x…

Windows 7 资源管理器搜索Channel 9 视频

在Windows 7 中Federated Search 可以通过OpenSearch 协议访问到远程数据资源,也就意味着用户可以使用资源管理器(Windows Explorer)搜索并浏览远程数据。本篇我们将制作一个搜索连接器(Search Connector)查找Channel …

sts html视图编辑器,免费的HTML可视化编辑器HBuilder前端开发编辑器 | 老疯子

互联网上几款比较热门的编辑器Dreamweaver、Notepad、Sublime Text、Vim、Emacs等,这些或许你用过其中之一或许听说过它们。这些都是国外人员开发的有些甚至被公认为是最受专业程序员喜爱的代码编辑器(Vim和Emacs)。都是国外的,那国内的呢?当…

sum(x) over( partition by y ORDER BY z ) 分析

参考的博文出处:http://www.cnblogs.com/luhe/p/4155612.html,对博文进行了修改新增,修改了错误的地方 之前用过row_number(),rank()等排序与over( partition by ... ORDER BY ...),这两个比较好理解: 先分组&#xff…

idea数据库反向生成实体类_IntelliJ IDEA 的数据库管理工具实在太方便了

1. 前言对于一个有软件洁癖的人,能用现有的软件解决问题的绝不安装新的软件。Java后端开发主要跟数据库打交道,所以数据库图形化界面(GUI)是少不了的。通常图形化操作关系型数据库(RMDBS)大多数人会选择Nav…

家装强电弱电布线图_关于你不知道的弱电改造详解 提早了解好做准备

在我们的日常生活中,没有一处是不用电的。洗衣、做饭、看电视,这些我们生活中看起来平淡无奇的小事,离开电却难以为继。今天,装一网为大家介绍弱电改造,很多业主不知道弱电改造是什么意思,也不知道弱电改造…