【发布时间】:2017-07-19 21:58:31
【问题描述】:
我无法让 ReactNative 上的 Webview 在物理 Android 设备上执行注入的 JavaScript。在过去的两天里,我尽可能地搜索了网络,但仍然没有找到解决方案。测试结果如下:
- iOS 模拟器 - 一切顺利
- iPhone - 一切顺利
- Android 模拟器 - 一切顺利
- 物理设备、Sony Xperia Z2、Sony 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 javascript代码需要在严格模式下编写。其他任何事情都是不可靠的。
-
@wmcbain 那么你会推荐什么?在我注入页面的代码 sn-p 之前添加“use strict”,或者在页面上已经存在的脚本之前添加它(作为
html的一部分)?或两者?我会看看我是否可以测试这两种情况...... -
很抱歉我说错了。我发现 Android javascript 代码需要正确格式化。例如行尾的
;和函数调用。 -
@wmcbain 嗯...我的代码格式正确,所有行都正确终止。我想我只能将整个脚本批量注入页面并忽略注入的Javascript。
-
对不起,我帮不上忙,这对我来说也是一个令人沮丧的问题。可能值得看看人们对 Android 网络视图的看法。
标签: android webview react-native