html兼容webview,ReactNative WebView加载HTML适配问题

本文介绍如何解决React Native中WebView组件加载H5页面时遇到的样式问题,如图片超出屏幕和文本大小不匹配等。通过注入JavaScript代码进行样式调整,并提供了一个具体的实现案例。

RN的WebView组件加载H5代码可能会出现一些样式问题,比如图片超出手机屏幕、文本大小样式问题。下面总结了一下,如何在WebView里面加入我们的标签代码以及样式适配。

class WebViewHTML extends Component {

constructor(props) {

super(props)

this.state = {

}

}

componentWillMount() {

}

componentDidMount() {

const injectedJavaScriptCode = `var objs = document.getElementsByTagName('img');for(var i=0;i

this.webview.injectJavaScript(injectedJavaScriptCode)

}

render() {

const { title, html, data } = this.props

const { SIGN, UPDATE_TIME } = this.props.data

const addHtml1 = '

\n\t'

const addHtml2 = '\n

\n'

const html1 = addHtml1 + title + addHtml2

const addHtml3 = '

'

const addHtml4 = '

'

const addHtml44 = '

'

const addHtml5 = '

'

const addHtml6 = '

\n'

const html2 = addHtml3 + addHtml4 + SIGN + addHtml5 + addHtml44 + UPDATE_TIME.substr(0, 10) + addHtml5 + addHtml6

const HTMLText = html1 + html2 + html

return (

ref={p => this.webview = p}

source={{ html: HTMLText, baseUrl: '' }}

style={{ flex: 1, width: SCREEN_WIDTH }}

automaticallyAdjustContentInsets={false}

javaScriptEnabled={true}

saveFormDataDisabled={true}

scalesPageToFit={Platform.OS === 'android' ? false : true}

// useWebKit={true}

scrollEnabled={false}

onMessage={event => {

// alert(event.nativeEvent.data);

}}

contentInset={{ top: 0, left: 0, right: 0, bottom: 0 }}

injectedJavaScript={`

const meta = document.createElement('meta');

meta.setAttribute('content', 'initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width');

meta.setAttribute('name', 'viewport');

document.getElementsByTagName('head')[0].appendChild(meta);`+`var objs = document.getElementsByTagName('img');for(var i=0;i

/>

)

}

}

const state = (state) => ({

userInfo: state.userInfo

})

export default connect(state)(WebViewHTML)

const styles = StyleSheet.create({

container: {

flex: 1

},

text: {

color: '#aab2b1',

fontSize: 12

}

})

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值