aardio群友的问题,web.script用xcall调用javascript函数不成功什么原因?
原问题的源码如下:
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add()
/*}}*/
import console;
var js = /**
function getTime(){
var rckey = +(new Date()) + ''
return rckey;
}
**/
var js2 = /**
function doencryptrc(src, passwd) {
src = (src+'').trim();
passwd = passwd + '';
var i, j = 0, a = 0, b = 0, c = 0, temp;
var plen = passwd.length,
size = src.length;
var key = Array(256); //int
var sbox = Array(256); //int
var output = Array(size); //code of data
for (i = 0; i < 256; i++) {
key[i] = passwd.charCodeAt(i % plen);
sbox[i] = i;
}
for (i = 0; i < 256; i++) {
j = (j + sbox[i] + key[i]) % 256;
temp = sbox[i];
sbox[i] = sbox[j];
sbox[j] = temp;
}
for (i = 0; i < size; i++) {
a = (a + 1) % 256;
b = (b + sbox[a]) % 256;
temp = sbox[a];
sbox[a] = sbox[b];
sbox[b] = temp;
c = (sbox[a] + sbox[b]) % 256;
temp = src.charCodeAt(i) ^ sbox[c];//String.fromCharCode(src.charCodeAt(i) ^ sbox[c]);
temp = temp.toString(16);
if (temp.length === 1) {
temp = '0' + temp;
} else if (temp.length === 0) {
temp = '00';
}
output[i] = temp;
}
return output.join('');
}
**/
import web.script;
runJS = web.script();
runJS.addCode(js)
runJS.addCode(js2)
console.log(runJS.xcall("doencryptrc",tostring("Dxs54175!!"),"111111111111"))
winform.show();
win.loopMessage();
经群友探讨,原因是:
(src+'').trim(); 是这里不支持 trim 用法,不是函数有问题.
aardio中的web.script 是基于IE的, 不支持很多新版JS的特性, 比如 const, async, promise
由于web.script 的 js 引擎版本太低了, String没有trim() 方法