我需要帮助而且我不明白发生了什么。 我有一个脚本获取文件夹中的文件列表,并评估所有的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);
}
但它说这段代码不是(或者没有定义)
并且两个片段都在同一个文件中,即eval&#d; d。
错误:
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();
}
}
似乎也在努力。
答案 0 :(得分:0)
代码在loadPlugins
函数的范围内进行评估,因此评估代码中定义的函数仅存在于该范围内。
您可以将函数编写为函数表达式并将其分配给全局变量,使其存在于全局范围中:
ss = function(event){
var key=event.keycode;
alert(key);
};
注意:ss
变量在全局范围内隐式创建。如果使用var ss
,它将是一个仅存在于函数范围内的局部变量。