3

IE8에서 내 북마크를 표시하는 코드를 작성했습니다. 확인하기 위해 JSHint를 사용했고 다음과 같은 오류가 발생합니다.자바 스크립트 코드가 유효성 검사기 (JSHint)에서 허용되지 않습니다.

  • var files = new 열거 자 (FavFolder.Files); '열거 자'가 정의되지 않았습니다. (라인 14)
  • 열거 자 (FavFolder.SubFolders); '열거 자'가 정의되지 않았습니다. (라인 34)
  • ActiveXObject ("Scripting.FileSystemObject"); 'ActiveXObject'가 정의되지 않았습니다. (라인 46)
  • ActiveXObject ("WScript.Shell"); 'ActiveXObject'가 정의되지 않았습니다. (라인 50)

누군가가 이유를 알고 있습니까?

내 코드 :

var i=0; 
var favString=""; 
var fso; 



function GetFavourites(Folder) 
{ 
var FavFolder=fso.GetFolder(Folder); 
//Gets Favourite Names & URL's for given folder. 
var files=new Enumerator(FavFolder.Files); 
for(; !files.atEnd() ;files.moveNext()) 
{ 
var fil=files.item(); 
if(fil.Type=="Internet Shortcut") 
{ 
var textReader=fso.OpenTextFile(fil.Path,1,false,-2); 
var favtext=textReader.ReadAll(); 
var start=favtext.indexOf("URL",16); 
var stop=favtext.indexOf("\n",start); 
favString+=fil.Name.replace(/.url/,""); 
favString+=":URL:"; 
//to separate favourite name & favorite URL 
favString+=favtext.substring(start+4,stop-1); 
favorites.innerHTML+=favString; 
favString+=":NEXT:"; //to separate favorites. 
i++; 
} 
} 
//Checks any subfolder exists 
var subfolders=new Enumerator(FavFolder.SubFolders); 
for(; !subfolders.atEnd() ;subfolders.moveNext()) 
{ 
var folder=subfolders.item(); 
GetFavourites(folder.Path); 
} 
} 

function Import() 
{ 
try 
{ 
fso=new ActiveXObject("Scripting.FileSystemObject"); 
if(fso !==null) 
{ 
//Create windows script shell object to access Favorites folder in user system. 
var object=new ActiveXObject("WScript.Shell"); 
var favfolderName=object.SpecialFolders("Favorites"); 
if(favString==="") 
{ 
GetFavourites(favfolderName); 
} 
} 
} 
catch(err) 
{ 
alert("Security settings to be modified in your browser "); 
} 
} 
+0

두 함수는 파일에서 볼 수있는 한 멀리 정의되어 있습니다. 전역 기능으로 처리하기 위해 유효성 검사 도구를 설정해야합니다 (즉, 항상 사용할 수 있음). –

+0

대단히 감사합니다. – Bruno

답변

2

jslint는 일반적으로 IE가 아닌 모든 브라우저에서 javascript 용이므로 EnumeratorActiveXObject 또는 다른 브라우저 지정 개체는 지원되지 않습니다.

IE 용으로 만 개발할 경우이 경고를 무시하십시오.

또한 미리 정의 된 텍스트 상자에 Enumerator, ActiveXObject을 추가 할 수 있습니다.

1

나는 Enumerator 어디서나 정의를 참조하지 않으며, ActiveXObject는 마이크로 소프트의 확장입니다. (Enumerator도 최소한 Windows Scripting Host에서 제공 될 수 있습니다.) JSHint는 공급 업체별 추가가 아닌 사양과 비교하여 검사합니다.

6

열거 자 및 ActiveXObject는 외부에서 정의 된 전역입니다. 당신은 자바 스크립트의 상단에있는 folllowing을 넣어이 무시 JSHint을 알 수 있습니다 :

/*global Enumerator: false, ActiveXObject: false */ 
+1

+1 '글로벌'일! –

1

그들은 IE 특정 모두있어, 어쩌면 파서에 "IE"플래그가? 그 외의 경우에는 코드를 실제로 전달하려는 경우 어떻게 든 정의해야합니다. 이 일을 올바른 방법 인 경우

0

내가 해달라고하지만, 나를

"predef": ["XDomainRequest","ActiveXObject"] 

내 .jshintrc이 추가이 작동합니다.