Проблема заключается в том, что WebView
исходный объект имеет строку html, которую он должен отображать после отображения индикатора загрузки. Но иногда это не показывает HTML. Снятие индикатора загрузки вообще ничего не показывает.
После отладки я обнаружил, что это условие ниже предотвращает вызов метода webViewDidFinishLoad()
. Я прокомментировал сейчас (я не знаю obj C) и отлаживаю, чтобы увидеть, если что-то ломается .. если кто-то знает, что происходит, пожалуйста, помогите мне.
Он вернется, и обработчики загрузки не будут работать вообще.
// file - RCTWebView.m:222
if (!isJSNavigation && _onShouldStartLoadWithRequest) {
RCTLogWarn(@"When this condition is true load method is not called");
NSMutableDictionary<NSString *, id> *event = [self baseEvent];
[event addEntriesFromDictionary: @{
@"url": (request.URL).absoluteString,
@"navigationType": navigationTypes[@(navigationType)]
}];
// if (![self.delegate webView:self
// shouldStartLoadForRequest:event
// withCallback:_onShouldStartLoadWithRequest]) {
// RCTLogWarn(@"SIm waiting for the 1 2 2");
// return NO;
// }
}
this-rn-github-issue утверждает, что решено, но для меня это не решено.
У меня 0.56 RN и тестирование на iOS
Использование:
<WebView
injectedJavaScript={'(' + String(injectedScript) + ')();'}
ref={ref => {
this.webview = ref;
}}
onNavigationStateChange={this.onClick.bind(this)}
onMessage={this.onMessage}
scrollEnabled={scrollEnabled}
javaScriptEnabled
automaticallyAdjustContentInsets
{...this.props}
style={[{ width: _w }, this.props.style, { height: _h }]}
/>
this.props= {source={{ html: content }}
startInLoadingState={true}
style={{
left: 6,
width: DeviceDimensions.width
}}}