HTA/VBScript是否支持类似JavaScript的动态函数创建机制?
VBScript在HTA中动态创建函数的实现方式
VBScript没有JavaScript里new Function()那样的原生构造函数,但可以通过纯VBScript的方式在HTA中动态创建函数,完全不需要混合JS代码:
使用
ExecuteGlobal全局执行代码字符串
这是最直接的方式,ExecuteGlobal会把传入的字符串代码在全局作用域中执行,直接定义出可全局调用的函数。示例代码:
' 获取textarea中用户输入的函数代码 Dim userFuncCode userFuncCode = document.getElementById("userCodeArea").value ' 全局执行代码,创建函数 ExecuteGlobal userFuncCode ' 直接调用动态创建的函数(假设用户输入的是名为MyDynamicFunc的函数) MyDynamicFunc()比如用户在textarea中输入的代码是:
Function MyDynamicFunc() MsgBox "这是动态生成的VBScript函数" End Function执行后就能直接调用
MyDynamicFunc()。注意:如果用
Execute而非ExecuteGlobal,函数只会在当前代码块的作用域内有效,无法全局调用,所以推荐用ExecuteGlobal。安全提示
执行用户输入的任意代码存在安全风险,实际使用中最好对输入内容做必要的校验或限制。
内容的提问来源于stack exchange,提问作者willy wonka
相关产品推荐
相关产品推荐

