各种JS引擎参考:
https://neyoufan.github.io/2016/12/23/android/Android Js引擎/在Android上使用JS引擎是一种什么样的体验?/
AndroidJSCore
https://github.com/ericwlange/AndroidJSCore.git
在应用AndroidJSCore过程中比较忐忑,毕竟只有三百多个star和四十多个fork。在综合考虑后还是应用了AndroidJSCore
AndroidJSCore已知问题
- 排序
执行以下语句无法正常排序
String test = "var stores =[1,3,5,2,7,9]; stores.sort(function(a, b){return a > b}); return stores;";
需要把>改为-, 才能正常执行,初步诊断为兼容性问题
String test = "var stores =[1,3,5,2,7,9]; stores.sort(function(a, b){return a - b}); return stores;";
- 分号问题
我们引擎中会对要执行的js片段jsCode包一层代码,如下:
JSValue newAValue = jsContext.evaluateScript("(function() {" + jsCode + " return OUT; } ) ();");
这时候如果jsCode的某些代码没有加分号,会导致出错, 如:
if (Page.getValue('__pagestatus') == '1') {
Ctrl.setProperties([controlsSetPropertyTransfer('审批状态', 'hidden', '1'), controlsSetPropertyTransfer('申请日期', 'hidden', '1')])
} else if (Page.getValue('__pagestatus') == '3') {
Ctrl.setProperties([controlsSetPropertyTransfer('审批状态', 'readonly', '1'), controlsSetPropertyTransfer('申请日期', 'readonly', '1'), controlsSetPropertyTransfer('请假类型', 'readonly', '1'), controlsSetPropertyTransfer('开始时间', 'readonly', '1'), controlsSetPropertyTransfer('结束时间', 'readonly', '1'), controlsSetPropertyTransfer('请假时长', 'readonly', '1'), controlsSetPropertyTransfer('备注', 'readonly', '1'), controlsSetPropertyTransfer('图片', 'readonly', '1'), controlsSetPropertyTransfer('附件', 'readonly', '1')])
}