import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Dimensions,
StatusBar,
TouchableOpacity,
TextInput,
WebView
} from 'react-native';
var {width,height} =Dimensions.get('window')
export default class demo extends Component {
constructor(props){
super(props);
this.state={
source:{
uri:"https://www.baidu.com"
},
status:"NO page Loaded",
backBuutonEnabled:false,
forwardButtonEnabled:false,
}
this.inputURL="";
this.goBack=this.goBack.bind(this);
this.goForward=this.goForward.bind(this);
this.goButton=this.goButton.bind(this);
this.stateChange=this.stateChange.bind(this);
this.onMessage=this.onMessage.bind(this)
}
onMessage(data){
console.log("网页的数据");
}
stateChange(navState){
console.log("网页路由数据");
console.log(navState);
this.setState({
backBuutonEnabled:navState.canGoBack,
forwardButtonEnabled:navState.canGoForward,
status:navState.title,
})
}
goBack(){
//让webView组件退回
this.refs.webViewRef.goBack();
}
//网页前进
goForward(){
this.refs.webViewRef.goForward();
}
//searh
goButton(){
console.log(this.inputURL.toLowerCase());
//在input和Go都调用这个方法
let uri=this.inputURL.toLowerCase();
if(uri==this.state.source.uri){
//当网页和当前的网址相同时候 重载网址
this.refs.webViewRef.reload();
console.log("zhogzao");
}else{
console.log("加载新网页");
let source={};
source.uri=uri;
this.setState({
source
})
} }
render() {
return (
<View style={styles.container}>
<StatusBar hidden={true}/>
<View style={styles.addressBarRow}>
<TouchableOpacity
onPress={this.goBack}
style={this.state.backBuutonEnabled?styles.navButton:styles.disableButton}>
<Text>{'<'}</Text>
</TouchableOpacity>
<TouchableOpacity
onPress={this.goForward}
style={this.state.forwardButtonEnabled?styles.navButton:styles.disableButton}>
<Text>{'>'}</Text>
</TouchableOpacity>
<TextInput ref="urlInputRef"
autoCapitalize="none"
style={styles.addressInput}
defaultValue={this.state.url}
onSubmitEditing={this.goButton}
onChangeText={(newText)=>this.inputURL=newText}
clearButtonMode='while-editing'
/>
<TouchableOpacity
onPress={this.goButton}
style={styles.goButton}>
<Text>Go!</Text>
</TouchableOpacity>
</View>
<WebView
ref="webViewRef"
style={styles.webView}
source={this.state.source}
javaScriptEnabled={true}
// 仅限Android平台。指定是否开启DOM本地存储
domStorageEnabled={true}
//网页导航 返回的是一些参数对象
onNavigationStateChange={this.stateChange}
// 强制WebView在第一次加载时先显示loading视图。默认为true
startInLoadingState={true}
//在网页端注入函数 这里得到返回的数据 从而达到RN和网页端的数据的交换
// onMessage={this.onMessage}
/>
<View style={styles.statusBar}>
<Text style={styles.statusBarText}>{this.state.status}</Text>
</View>
</View>
);
}
} const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: 'blue',
},
addressBarRow:{
flexDirection:'row',
padding:8,
},
navButton:{
width:20,
padding:3,
marginRight:20,
alignItems:'center',
justifyContent:'center',
backgroundColor:'#fff',
borderColor:'transparent',
borderRadius:3
},
disableButton:{
width:20,
padding:3,
marginRight:20,
alignItems:'center',
justifyContent:'center',
backgroundColor:'grey',
borderColor:'transparent',
borderRadius:3
},
addressInput:{
backgroundColor:'#fff',
borderColor:'transparent',
borderRadius:3,
height:24,
paddingLeft:10,
paddingTop:3,paddingBottom:3,
flex:1,
fontSize:14,
},
goButton:{
height:24,
padding:3,
marginLeft:8,
alignItems:'center',
justifyContent:'center',
borderColor:'transparent',
borderRadius:3,
alignSelf:'stretch'
},
webView:{
backgroundColor:'#fff',
height:350
},
statusBar:{
flexDirection:'row',
alignItems:'center',
paddingLeft:5,
height:22
},
statusBarText:{
color:'#fff',
fontSize:13
}
}); AppRegistry.registerComponent('demo', () => demo);

RN 实现简易浏览器的更多相关文章

  1. 第4课 简易浏览器-WebViewer组件的使用方法

    做一个手机浏览器,需要哪些组件呢? 一.组件设计 二.组件属性及命名修改 三.逻辑设计 1.导航按钮代码:前进.后退.主页 2.访问网页按钮 1)根据用户在地址栏输入的地址书写,判断书写中是否含有“h ...

  2. python3用pyqt5开发简易浏览器

    http://python.jobbole.com/82715/ 在这篇教程中,我们会用 Python 的 PyQt 框架编写一个简单的 web 浏览器.关于 PyQt ,你可能已经有所耳闻了,它是 ...

  3. (五十九)iOS网络基础之UIWebView简易浏览器实现

    [UIWebView网络浏览器] 通过webView的loadRequest方法可以发送请求显示相应的网站,例如: NSURL *url = [NSURL URLWithString:@"h ...

  4. 简易浏览器App webview

    使用 public class MainActivity extends Activity {     @Override     protected void onCreate(Bundle sav ...

  5. HTTP协议之 简易浏览器(3)--转载

    简单的说,今天的全部工作就是 我的目的只有两个 1.加深对http协议的理解   2.深化对B/S结构的认识. 代码 1 /* 2 这个程序把主机地址写死了, 3 想更像的话,可以在加个输入.然后根据 ...

  6. C# 封装miniblink 使用HTML/CSS/JS来构建.Net 应用程序界面和简易浏览器

    MiniBlink的作者是 龙泉寺扫地僧 miniblink是什么?   (抄了一下 龙泉寺扫地僧 写的简洁) Miniblink是一个全新的.追求极致小巧的浏览器内核项目,其基于chromium最新 ...

  7. 写一个简易浏览器、ASP.NET核心知识(3)

    前言 先在文章前面说好了,省得大家发现我根本没有这样的头发,duang的一下一堆人骂我. 这篇文章的标题有点大,其实挺low的,我需要在开头解释一下.我这里只想写一个小的控制台,旨在模拟浏览器的htt ...

  8. 手机 简易浏览器 WebView的基本使用 返回 缓存 进度条

    public class MainActivity extends AppCompatActivity { private WebView webView; private String url = ...

  9. 【原创】闲来无事,用Winform写了个简易浏览器

    核心是利用了winform自带的WebBrowser控件,修改了下IE内核的版本,目前还是单线程的,逻辑挺简单的,萌新都能看懂. 废话不多说,上代码,附打包project. 链接:https://pa ...

随机推荐

  1. Radio中REG

    Auto REG/REG OFF在广播接收质量不好时,收音机首先仅调整到该广播电台当前发射的可选频率.但是,如果接收质量差到“该发射电台濒临消失”的程度,则收音机也会接收德国NDR1(北德意志广播电台 ...

  2. JustOj 1036: 习题6.11 迭代法求平方根

    题目描述 用迭代法求 .求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001. 输出保留3位小数 输入 X 输出 X的平方根 样例输 ...

  3. Android4.0 主线程不能访问网络异常解决办法

    从两个方面说下这个问题: 1. 不让访问网络的原因 2. 解决该问题的办法 不让访问网络的原因: 由于对于网络状况的不可预见性,很有可能在网络访问的时候造成阻塞,那么这样一来我们的主线程UI线程 就会 ...

  4. kali linux下 hachcat安装

    网上关于hachcat的简单使用方法介绍很多,然而却很少有在kali linux上的安装教程,找了好长时间,终于安装成功了,特此将中间借鉴的内容记录如下: #首先安装p7z,用于解压下载的p7z包 # ...

  5. 大数据自学2-Hue集成环境中使用Sqoop组件从Sql Server导数据到Hive/HDFS

    安装完CDH后,发现里面的东东实在是太多了,对于一个初学大数据的来说就犹如刘姥姥进了大观园,很新奇,这些东东每个单拿出来都够喝一壶的. 接来来就是一步一步地学习了,先大致学习了每个模组大致做什么用的, ...

  6. 一个六年Java程序员的从业总结:比起掉发,我更怕掉队

    我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕. 当年纪越来越大后,我开始变得不能加班.我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样 ...

  7. Spring Boot 实现RESTful webservice服务端示例

    1.Spring Boot configurations application.yml spring: profiles: active: dev mvc: favicon: enabled: fa ...

  8. cms STW 的两个阶段

    CMS在初始标记和重复标记阶段会停顿

  9. PHP 支付类库, cURL开源HTTP类库

    未做任何测试 支付类库地址:http://doc.yurunsoft.com/PaySDK cURL开源HTTP类库地址:http://doc.yurunsoft.com/YurunHttp/1

  10. Vue小案例 之 商品管理------删除商品与提示

    实现删除商品功能 根据索引来进行删除商品: 实现删除商品的HTML: <!--显示表格--> <div class="table-warp"> <di ...