VFP中超爽运行JS代码

2021-08-16 14:59:23 浏览数 (2)

当加菲猫没说过

在我们的Windows系统里提供了一个叫ScriptControl的com组件,我们可以用这个组件来调用JS等脚本语言的资源。

有些库我们VFP没有的话,JS有的话,我们就可以大量运用了哦。

1 用Eval()来实现表达式的计算

代码语言:javascript复制
oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
?oJs.eval("100 5*3")

2 调用JS内置函数,示例汉字编码

代码语言:javascript复制
oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
cWords="汉字"
?ojs.Eval('escape("' cWords '")')

传参用拼接的比较累就是了

03

3 调用自定义函数 注意JS的小大写

代码语言:javascript复制
TEXT TO lcJs TEXTMERGE PRETEXT 1 2 NOSHOW
function xx1 (x,y){
 return x y;
}
ENDTEXT
oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
oJs.AddCode(lcJs)
?oJs.Eval("xx1(" '1,2' ")")

也可以用run来调用,更爽一点

代码语言:javascript复制
TEXT TO lcJs TEXTMERGE PRETEXT 1 2 NOSHOW
function xx1 (x,y){
 return x y;
}
ENDTEXT
oJs=Createobject("ScriptControl")
oJs.Language="JavaScript"
oJs.AddCode(lcJs)
?oJs.run("xx1",1,2)

只要是添加到Script 控件的函数是完整的,Run 方法就可以运行。

那不完整的片段,我们怎么办呢?

下面就可以用 ExecuteStatement 方法将值 100 赋给变量 x。下面的两行用 eval 方法来测试语句 x = 100 和 x = 100/2。第二行返回 .T.;而第三行则返回 .F.。

代码语言:javascript复制
oJs=Createobject("ScriptControl")

oJs.Language="JavaScript"
oJs.ExecuteStatement("x = 0/100")
?oJs.Eval("x == 100") && 返回 .T.
?oJs.Eval("x == 100/2") && 返回 .F.

0 人点赞