ReactNative – Webview不在Android上执行injectJavaScript

我无法在ReactNative上获取Webview以在物理 Android设备上执行注入的 JavaScript.在过去的两天里,我尽可能地搜索网络,但仍未找到解决方案.测试结果如下:

> iOS模拟器 – 一切都很好
> iPhone – 一切都很好
> Android模拟器 – 一切都很好
>物理设备,索尼Xperia Z2,索尼Xperia Z5 Compact和LG G4 – 没什么

我的Webview定义如下:

<WebView
  style={styles.webView}
  source={{
    html: html,baseUrl: 'web/'
  }}
  injectedJavaScript={'render(' + JSON.stringify(this.state.data) + ');'}
  javaScriptEnabledAndroid={true}
  scrollEnabled={false}
  bounces={false}
  renderLoading={() => <LoadingIndicator />}
/>

我也尝试过指定javaScriptEnabled,但无济于事.我还尝试使用较小的脚本来对页面上的元素进行着色,或者使用window.postMessage将消息发回给应用程序,但没有任何反应.我需要将数据注入HTML,这将根据提供的数据为我呈现图形.我最后的办法是手动构建HTML,并附加数据作为提供给Webview的标记的一部分,但我真的希望保持简单,让它按照应有的方式工作.

我正在使用最新版本的ReactNative(0.41),手机正在运行Android 6.

解决方法

我刚刚发现Android WebView似乎将任何JS注入单行,即使它包含换行符.这意味着缺少分号肯定会导致问题,或者在我的情况下,由//分隔的注释.使用/ *和* /注释让我注入的JavaScript再次运行.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...