我一直在使用React Native上的webview,但是我想更改网站的CSS以自定义样式。有办法吗?
使用react native cli&android studio
import React from 'react';
import { StyleSheet, Text, View, Image, StatusBar, ScrollView, TouchableOpacity, WebView, ActivityIndicator } from 'react-native';
class king_of_prussia extends React.Component {
static navigationOptions = {
title: 'King Of Prussia',
headerTitleStyle :{textAlign: 'center', alignSelf:'center', fontSize: 18, fontWeight: 'normal', color: '#3E3E40' },
headerStyle:{
backgroundColor:'white',
},
};
ActivityIndicatorLoadingView() {
return (
<ActivityIndicator
color='black'
size='large'
style={styles.ActivityIndicatorStyle}
/>
);
}
render() {
return (
<View style={styles.container}>
<StatusBar
backgroundColor='#F1F1F1'
barStyle='dark-content'/>
<WebView
source={{uri: 'https://www.simon.com/mall/king-of-prussia/map#/'}}
scalesPageToFit = {false}
javaScriptEnabled={true}
domStorageEnabled={true}
renderLoading={this.ActivityIndicatorLoadingView}
startInLoadingState={true}
/>
</View>
);
}
}
export default king_of_prussia;
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#EFF2F5',
},
footer: {
flexDirection: 'column',
alignItems: 'center',
marginBottom: 25,
},
shareText:{
color:'#95989A',
fontSize: 12
},
ActivityIndicatorStyle:{
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
alignItems: 'center',
justifyContent: 'center'
}
});
我想从网站上删除标题,并修改其他样式。
答案 0 :(得分:1)
WebView有一个可用的“ injectedJavaScript”道具,可让您向其提供一段JavaScript,可用于操纵该页面上的任何CSS / HTML。
这有点hacky,但是我真的没有看到其他选择,因为在使用网络视图时,您实际上是在使用iframe。
我正在使用它来隐藏我在应用程序的Web视图中引用的网站的导航栏中的汉堡栏:
<WebView
source={{uri: this.state.magicUrl}}
style={{ flex: 1 }}
injectedJavaScript={'function hideHeaderToggle() {var headerToggle = document.getElementsByClassName("navbar-toggle"), i;for (i = 0; i < headerToggle.length; i += 1) {headerToggle[i].style.display = "none";};}; hideHeaderToggle();'}
/>
完全有可能有更好的选择,但这当然是一个选择。