ReactNative系列之十一原生RN控件WebView与Html5之件的调用

44 篇文章 1 订阅 ¥9.90 ¥99.00
本文介绍ReactNative 0.37后WebView的增强功能,无需第三方库即可实现与Html5的相互调用和数据传递。
摘要由CSDN通过智能技术生成

1、前言系列九讲解过使用第三方WebViewBridge与Html5之间的通信,但在ReatNative0.37之后,增强的WebView的功能,不需要第三方也可以原生支持互调与传递数据

2、主要代码

export default class Render extends Component {

  constructor(props) {
      super(props);
      this.state = {
        msgstr: "",
        title:"",
        simpleContent:"<!DOCTYPE html>\n<html></html>"
      };
    }

 onMessage(e)
 {
 	Alert.alert(e.nativeEvent.data);
 	//Alert.alert(this.state.simpleContent);

 	if (this.refs.webview)
 	{
 		this.refs.webview.postMessage("msg('"+e.nativeEvent.data+"')");
 	}
 	else
 	{
 		Alert.alert("error");
 	}
 }

  render () {
    //let display = this.state.showText ? this.state.strabc : ' ';
    
      return (
        <View style={styles.container}>
        <ScrollView 
        contentContainerStyle={styles.contentContainer}
        showsVerticalScrollIndicator={true}>

          <Text style={styles.hello}> {this.state.title} ,Welcome! </Text>
          
          <WebView
          ref='webview'
          onMessage={this.onMessage.bind(this)}
          automaticallyAdjustContentInsets={false}
          style={styles.webView}
          source={{ uri:'file:///android_asset/pages/nullpage.html'}}
          //injectedJavaScript={this.bootstrapJS()}
          injectedJavaScript="document.addEventListener('message', function(e) {eval(e.data);});"
          javaScriptEnabled={true}
          domStorageEnabled={true}
          decelerationRate="normal"
          startInLoadingState={true}
          scalesPageToFit={true}
        />
          </ScrollView>
        </View>
      )
  }
}
var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
  },
  hello: {
    fontSize: 12,
    margin: 10,
  },
  contentContainer: {
      paddingVertical: 20
    },
    webView: {
      backgroundColor: BGWASH,
      height: 350,
    },
});

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
  <script>
      function onYeputi1015() {
        window.postMessage("Title: yeputi1015");
      }
      function msg(event) {
        document.write("event:"+event);
      }

    </script>
  <h1>Yeputi1015</h1>
  <button οnclick="onYeputi1015()">单击</button>
  </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值