ReactNative在ScrollView中嵌套使用WebView率触,WebView自適應(yīng)高度

參考http://blog.csdn.net/chichengjunma/article/details/53423689

使用發(fā)現(xiàn)高度計算的不對汽畴,經(jīng)過排查和測試戈二,正確地如下:

1、新建文件WebViewAutoHeight.js

/**

* WebView自適應(yīng)高度

*/

importReact, {Component,propTypes}from'react';

import{WebView, View, Text}from"react-native";

constBODY_TAG_PATTERN=/\<\/ *body\>/;

// Do not add any comments to this! It will break because all line breaks will removed for

// some weird reason when this script is injected.

varscript=`

;(function() {

var wrapper = document.createElement("div");

wrapper.id = "height-wrapper";

while (document.body.firstChild) {

wrapper.appendChild(document.body.firstChild);

}

document.body.appendChild(wrapper);

var i = 0;

function updateHeight() {

document.title = wrapper.clientHeight;

window.location.hash = ++i;

}

updateHeight();

window.addEventListener("load", function() {

updateHeight();

setTimeout(updateHeight, 1000);

});

window.addEventListener("resize", updateHeight);

}());

`;

conststyle=`

body,html, #height-wrapper {

margin: 10;

padding: 0;

}

#height-wrapper {

position: absolute;

top: 0;

left: 0;

right: 0;

}

${script}

`;

constcodeInject= (html) => html.replace(BODY_TAG_PATTERN,style+"");

/**

* Wrapped Webview which automatically sets the height according to the

* content. Scrolling is always disabled. Required when the Webview is embedded

* into a ScrollView with other components.

*

* Inspired by this SO answer http://stackoverflow.com/a/33012545

* */

varWebViewAutoHeight= React.createClass({

propTypes: {

source: React.PropTypes.object.isRequired,

injectedJavaScript: React.PropTypes.string,

minHeight: React.PropTypes.number,

onNavigationStateChange: React.PropTypes.func,

style: WebView.propTypes.style,

},

getDefaultProps() {

return{minHeight:0};

},

getInitialState() {

return{

realContentHeight:this.props.minHeight,

};

},

handleNavigationChange(navState) {

if(navState.title) {

constrealContentHeight= navState.title;//parseInt(navState.title, 20) || 0; // turn NaN to 0

if(!isNaN(realContentHeight)){

this.setState({realContentHeight});

}

}

if(typeof this.props.onNavigationStateChange==="function") {

this.props.onNavigationStateChange(navState);

}

},

render() {

const{source,style,minHeight, ...otherProps} =this.props;

consthtml=source.html;

if(!html) {

throw newError("WebViewAutoHeight supports only source.html");

}

if(!BODY_TAG_PATTERN.test(html)) {

throw newError("Cannot find from: "+html);

}

return(

{...otherProps}

source={{html:codeInject(html)}}

scrollEnabled={false}

style={[style, {height:Math.max(this.state.realContentHeight,minHeight)}]}

javaScriptEnabled

onNavigationStateChange={this.handleNavigationChange}

/>

);

},

});

export defaultWebViewAutoHeight;

2队塘、使用

import WebViewAutoHeight from '../components/WebViewAutoHeight';

constructor(props) {

super(props);//這一句不能省略袁梗,照抄即可

this.state= {

height:0,

};

}

使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宜鸯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遮怜,更是在濱河造成了極大的恐慌淋袖,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奈泪,死亡現(xiàn)場離奇詭異适贸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涝桅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門拜姿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冯遂,你說我怎么就攤上這事蕊肥。” “怎么了蛤肌?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵壁却,是天一觀的道長。 經(jīng)常有香客問我裸准,道長展东,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任炒俱,我火速辦了婚禮盐肃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘权悟。我一直安慰自己砸王,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布峦阁。 她就那樣靜靜地躺著谦铃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榔昔。 梳的紋絲不亂的頭發(fā)上驹闰,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機(jī)與錄音撒会,去河邊找鬼疮方。 笑死,一個胖子當(dāng)著我的面吹牛茧彤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疆栏,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼曾掂,長吁一口氣:“原來是場噩夢啊……” “哼惫谤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起珠洗,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤溜歪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后许蓖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝴猪,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年膊爪,在試婚紗的時候發(fā)現(xiàn)自己被綠了自阱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡米酬,死狀恐怖照弥,靈堂內(nèi)的尸體忽然破棺而出历筝,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布残邀,位于F島的核電站,受9級特大地震影響洲脂,放射性物質(zhì)發(fā)生泄漏掏湾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一飞盆、第九天 我趴在偏房一處隱蔽的房頂上張望娄琉。 院中可真熱鬧,春花似錦桨啃、人聲如沸车胡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匈棘。三九已至,卻和暖如春析命,著一層夾襖步出監(jiān)牢的瞬間主卫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工鹃愤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留簇搅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓软吐,卻偏偏與公主長得像瘩将,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 現(xiàn)在最熱門的前端框架姿现,毫無疑問是 React 肠仪。上周,基于 React 的 React Native 發(fā)布备典,結(jié)果一...
    sakura_L閱讀 422評論 0 0
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南异旧,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個人覺得該教程講解深入淺出提佣,比目前大...
    leonaxiong閱讀 2,813評論 1 18
  • 今天天變了臉吮蛹,雖然有天氣預(yù)報,但是昨天的攝氏二十以上和今天的十度以下的大反差還是讓人很不舒服拌屏,收起的厚棉衣又得拿出...
    竇家香閱讀 103評論 0 0
  • 1 一個大叔槐壳,他從05年就開始寫作然低,那一年33歲。每天寫务唐,每天堅持 寫1000字雳攘。 剛開始只是寫日記,開始寫日記時...
    Ameizeng閱讀 385評論 2 10
  • cosplay愛好者如何成為職業(yè)coser (連載9) ——如何用創(chuàng)業(yè)的角度打造自己的專屬品牌枫笛,實(shí)現(xiàn)獨(dú)立coser...
    早叔閱讀 1,520評論 0 0