【React Native开发】React Native控件之WebView组件详解以及实例使用

magtermuz736 9年前

来自: http://www.lcode.org/【react-native开发】react-native控件之webview组件详解以及实例使用22/

(一)前言

今天我们一起来看一下WebView组件讲解以及使用实例

刚创建的React Native技术交流群( 282693535 ),欢迎各位大牛,React Native技术爱好者加入交流!同时博客左侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送!

该WebView组件进行创建渲染一个原生的WebView,进行加载一个网页。

(二)属性方法

  1. 继承可以使用View组件的所有属性和Style(具体查看: http://非死book.github.io/react-native/docs/view.html#contenthttp://非死book.github.io/react-native/docs/view.html#style )
  2. automaticallyAdjustContentInsets bool   设置是否自动调整内容
  3. contentInset  {top:number,left:number,bottom:number,right:number}  设置内容所占的尺寸大小
  4. html  string  WebView加载的HTML文本字符串
  5. injectJavaScript  string 当网页加载之前进行注入一段js代码
  6. onError function  方法 当网页加载失败的时候调用
  7. onLoad  function 方法  当网页加载结束的时候调用
  8. onLoadEnd fucntion 当网页加载结束调用,不管是成功还是失败
  9. onLoadStart  function  当网页开始加载的时候调用
  10. onNavigationStateChange function方法  当导航状态发生变化的时候调用
  11. renderError  function  该方法用于渲染一个View视图用来显示错误信息
  12. renderLoagin function  该方法用于渲染一个View视图用来显示一个加载进度指示器
  13. startInLoadingState  bool
  14. url  string  设置加载的网页地址
  15. allowsInlineMediaPlayback  bool   该适合iOS平台,设置决定当使用HTML5播放视频的时候在当前页面位置还是使用原生的全屏播放器播放,默认值false。【注意】.为了让视频在原网页位置进行播放,不光要设置该属性为true,还必须要设置HTML页面中video节点的包含webkit-playsinline属性
  16. bounces bool  该适合iOS平台 设置是否有界面反弹特性
  17. domStorageEnabled bool  该适合Android平台 该只适合于Android平台,用于控制是否开启DOM Storage(存储)
  18. javaScriptEnabled  bool  该适合于Android平台,是否开启javascript,在iOS中的WebView是默认开启的
  19. onShouldStartLoadWithRequest  function  该适合iOS平台,该允许拦截WebView加载的URL地址,进行自定义处理。该方法通过返回true或者falase来决定是否继续加载该拦截到请求
  20. scalesPageToFit  bool  该适合iOS平台  用于设置网页是否缩放自适应到整个屏幕视图以及用户是否可以改变缩放页面
  21. scrollEnabled  bool    该适合iOS平台 用于设置是否开启页面滚动

(三)实战实例

上面我已经对于WebView组件的基本介绍以及相关属性方法做了讲解,下面我们用几个实例来演示一下WebView组件的使用。

3.1.先演示一个WebView组件最基本的使用方法,直接加载一个网页,具体代码如下:

'use strict';  import React, {    AppRegistry,    Component,    StyleSheet,    Text,    View,    WebView,  } from 'react-native';  var DEFAULT_URL = 'http://www.lcode.org';    var WebViewDemo = React.createClass({    render: function() {      return (        <View style={{flex:1}}>          <Text style={{height:40}}>简单的网页显示</Text>          <WebView style={styles.webview_style}             url={DEFAULT_URL}            startInLoadingState={true}            domStorageEnabled={true}            javaScriptEnabled={true}            >          </WebView>        </View>      );    },  });  var styles = StyleSheet.create({      webview_style:{           backgroundColor:'#00ff00',         }  });    AppRegistry.registerComponent('WebViewDemo', () => WebViewDemo);

运行效果截图如下:

3.2.WebView加载本地的HTML静态字符串,具体代码如下:

'use strict';  import React, {    AppRegistry,    Component,    StyleSheet,    Text,    View,    WebView,  } from 'react-native';  var DEFAULT_URL = 'http://www.lcode.org';  const HTML = `  <!DOCTYPE html>\n  <html>    <head>      <title>HTML字符串</title>      <meta http-equiv="content-type" content="text/html; charset=utf-8">      <meta name="viewport" content="width=320, user-scalable=no">      <style type="text/css">        body {          margin: 0;          padding: 0;          font: 62.5% arial, sans-serif;          background: #ccc;        }        h1 {          padding: 45px;          margin: 0;          text-align: center;          color: #33f;        }      </style>    </head>    <body>      <h1>加载静态的HTML文本信息</h1>    </body>  </html>  `;  var WebViewDemo = React.createClass({    render: function() {      return (        <View style={{flex:1}}>          <WebView style={styles.webview_style}             html={HTML}            startInLoadingState={true}            domStorageEnabled={true}            javaScriptEnabled={true}            >          </WebView>        </View>      );    },  });  var styles = StyleSheet.create({      webview_style:{           backgroundColor:'#00ff00',         }  });    AppRegistry.registerComponent('WebViewDemo', () => WebViewDemo);

运行效果截图如下:

(四)最后总结

今天我们主要学习一下WebView组件的基本介绍和实例演示使用,具体还有更加详细的使用方法会在后面进阶中继续更新的。大家有问题可以加一下群React Native技术交流群( 282693535 )或者底下进行回复一下。

尊重原创,转载请注明:From Sky丶清( http://www.lcode.org/ ) 侵权必究!

关注我的订阅号(codedev123),每天分享移动开发技术(Android/IOS),项目管理以及博客文章!(欢迎关注,第一时间推送精彩文章)

关注我的微博,可以获得更多精彩内容