函数 undefined/null 即使使用 eval()

Function undefined/null even with eval()

我需要帮助,但我不明白发生了什么。 我有一个脚本获取文件夹中的文件列表,并评估所有 js 文件。 我注入了一些 html,但是当我使用 html 时,它调用了我的函数,但它说一个函数(之前计算过)没有定义??

编辑:{ 用 html、javascript、css 和 vbs 编写。在 HTA 中。 }

我试着移动片段,但它仍然给我错误。 (而且我不能只复制并粘贴到主文件,它应该是一个插件)

代码:(部分不是全部)

var inject='<div id="console">\
<br><div id="consoletitle" class="dynDiv_moveParentDiv dynDiv_bodyLimit"><center>Console</center></div>\
<a id="consolekey"></a><a id="consolea"></a>\
<input type="text" id="consoleba" onkeydown="if(event.keyCode==13){ss(event);}">\
</div>';
plugins.innerHTML+=inject;

这部分工作得很好,注入了html

function ss(event){
 var key=event.keycode;
 alert(key);
}

但它说此代码未评估(或未定义)

并且两个片段都在同一个文件中,该文件已被评估。

错误:

Line: 1
Char: 23
Error: The value of the property 'ss' is null or undefined, not a function object
Code: 0
URL:

这是加载和评估每个文件的代码:

var fso=new ActiveXObject("Scripting.FileSystemObject");

这很好用。

function loadPlugins(){
    var fs=new Enumerator(fso.GetFolder("./plugins/").Files);
    for(;!fs.atEnd();fs.moveNext()){
        var file=fso.OpenTextFile(fs.item(),1);
        eval(file.readAll());
        file.close();
    }
}

似乎也在工作。

代码在 loadPlugins 函数的范围内求值,因此求值代码中定义的函数仅存在于该范围内。

可以将函数写成函数表达式,赋值给全局变量,使其存在于全局作用域中:

ss = function(event){
 var key=event.keycode;
 alert(key);
};

注意:ss 变量是在全局范围内隐式创建的。如果你使用 var ss 它将是一个只存在于函数范围内的局部变量。