나는 도움이 필요하고 무슨 일이 일어나고 있는지 이해하지 못합니다. 스크립트가 폴더의 파일 목록을 가져오고 모든 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 동일한 파일에 있습니다.
오류:
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
하면 함수 범위 내에 만 존재하는 지역 변수가됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다