3

我已經寫了一些代碼來在IE8中顯示我的書籤。檢查它我已經使用JSHint,我得到以下錯誤:驗證碼未接受Javascript代碼(JSHint)

  • var files = new Enumerator(FavFolder.Files); '枚舉器'沒有定義。 (Line 14)
  • Enumerator(FavFolder.SubFolders); '枚舉器'沒有定義。 (Line 34)
  • ActiveXObject(「Scripting.FileSystemObject」); 'ActiveXObject'未定義。 (第46行)
  • ActiveXObject(「WScript.Shell」); 'ActiveXObject'未定義。 (Line 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

就我所見,這兩個函數都沒有在文件中定義。您可能必須設置驗證工具來將它們視爲全局函數(即它們始終可用)。 – 2011-05-11 09:49:18

+0

感謝大家爲你的偉大答案! – Bruno 2011-05-11 10:02:26

回答

2

jslint通常用於所有瀏覽器中的javascript,而不是IE指定的,因此不支持EnumeratorActiveXObject或其他瀏覽器指定的對象。

如果您只爲IE開發,請忽略這些警告。

此外,您可以在預定義的文本框中添加Enumerator, ActiveXObject

1

我沒有看到任何地方Enumerator定義,ActiveXObject是Microsoft擴展。 (至少在Windows Scripting Host中,也可以使用Enumerator)。JSHint會根據規範進行檢查,而不是針對特定於供應商的添加。

6

枚舉器和ActiveXObject是外部定義的全局變量。你可以告訴JSHint通過將folllowing在你的JavaScript的頂部忽略這些:

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

+1爲'全球'的事情! – 2011-05-11 09:52:24

1

他們都專門針對IE,也許解析器有一個「IE」標誌?除此之外,如果你真的想讓你的代碼通過,你需要以某種方式定義它們。

0

我不,如果這是這樣做的正確的方式,但是這對我的作品

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

我說這個我.jshintrc。