React-native升級記錄(4):webview大坑
之前webview在ios上遇到動畫的性能問題,換上了WKWebView;
useWebKit={true}
問題1
這個問題一直存在,本以爲換成WebKit能順帶解決這個問題,沒想到現實太殘忍了。
onNavigationStateChange={this.handleNavigationStateChange}
這個方法可以監聽webview的navigation變化情況,其中回返回一個參數canGoBack,用來告訴你頁面是否可以回退,但是很遺憾,它返回的很不靠譜,尤其在H5頁面採用路由跳轉的時候,我這用的是hash路由的情況下就會出現偶爾返回false,偶爾又返回true的情況,導致無法正確判斷頁面是否可以回退。
官網也沒有給出合理的解釋:
https://github.com/facebook/react-native/issues/14889
問題2
這是一個新出現的問題,在使用WebKit以後,如果H5頁面上調用了window.alert或者window.confirm是無效,坑爹的是我們使用的前端調試工具vconcole就用了confirm,還依賴了它的返回,導致某些調試功能就不能用了。
官方的說法是WKWebView對於alert和confirm的實現是需要額外的原生實現的,諮詢了ios的開發同學,果然是這樣,即使是原生的開發也有同樣的問題,需要自己來實現。
咋辦,這個問題對於開發來說是很困擾的,這個時候,我突然靈感閃動
window.confirm=function() {
return true;
}
機智不機智,在不修改app的情況下只能先這樣workaround。
- 還好是影響開發環境,不上線,要不然還得評估這個影響。