函数 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
它将是一个只存在于函数范围内的局部变量。
我需要帮助,但我不明白发生了什么。 我有一个脚本获取文件夹中的文件列表,并评估所有 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
它将是一个只存在于函数范围内的局部变量。