我正在使用 cordova 编写一个应用程序并在 android 8.0.0 上测试它,它工作正常。 但在我 friend 的手机(android 4.4.4)上它不起作用,我在控制台日志中收到这些错误。
Uncaught SyntaxError: Unexpected reserved word Widget.js:9
Uncaught SyntaxError: Unexpected reserved word Image.js:8
Uncaught SyntaxError: <unknown message reserved_word> Button.js:7
Uncaught SyntaxError: <unknown message reserved_word> TextArea.js:8
Uncaught SyntaxError: <unknown message reserved_word> Effect.js:8
Uncaught SyntaxError: Unexpected reserved word View.js:9
Uncaught SyntaxError: <unknown message reserved_word> User_interface.js:8
Uncaught SyntaxError: <unknown message reserved_word> Communication.js:8
Uncaught SyntaxError: <unknown message reserved_word> App.js:7
这些错误会阻止关键字“class”
Uncaught SyntaxError: Unexpected token ) index.js:16
并且还阻止:
AndroidFullScreen.immersiveMode(()=>{},()=>{});
这里我认为它无法识别箭头功能,但我不确定。
我想知道我是否可以修复它,或者手机对于我的应用程序来说太旧了? 如果您需要其他信息,请告诉我,我会提供:)
提前致谢
最佳答案
在 Android 4.4 之前,cordova 使用旧的 Android 浏览器(对 html 5 的支持非常旧)。
从android 4.4开始,android浏览器被Chrome取代,但webview使用的Chrome版本无法升级(4.4为36版本)。
从android 5.0开始,chrome现在是在apk中并且可以更新。
箭头函数要求 Chrome 版本最低为 45,这就是您的应用无法在您 friend 的手机上正常运行的原因。
如果希望您的应用在 Android 5 之前的手机上正常运行,您可以:
- 不要使用太新的 javasctipt(检查 caniuse 的支持)
- 使用 crosswalk 插件将 WebView 嵌入到您的应用中
Crosswalk 应该始终使用最新版本的 chromium,但不幸的是该项目不再更新,因此您也无法使用最新的 javascript 更新。 (Crosswalk 的最新版本使用 chromium 版本 53,它比 Android 4.4 中使用的 36 更新得多)
Crosswaalk 的优点是您的应用程序在所有设备上对 html/js/css 具有相同的支持,因此您知道您的应用程序在所有设备上的行为/外观。
使用 Crosswalk 会导致 APK 更大,因此这并不总是最佳选择。
您还可以构建两个不同的 apk 版本,一个用于 android <5.0,另一个用于更新版本。
关于javascript - 未捕获的语法错误 : Unexpected reserved word on older android version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50471928/