验证器不接受Javascript代码(JSHint)

时间:2011-05-11 09:45:50

标签: javascript internet-explorer internet-explorer-8 activex jslint

我已经编写了一些代码来在IE8中显示我的书签。为了检查它我使用了JSHint,我得到以下错误:

  • var files = new Enumerator(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 ");
}
}

5 个答案:

答案 0 :(得分:6)

Enumerator和ActiveXObject是外部定义的全局变量。您可以通过将以下内容放在JavaScript的顶部来告诉JSHint忽略这些:

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

答案 1 :(得分:2)

jslint通常用于所有浏览器中的javascript,而不是IE指定的,因此不支持EnumeratorActiveXObject或其他浏览器指定的对象。

如果您仅针对IE进行开发,请忽略这些警告。

另外,您可以在预定义文本框中添加Enumerator, ActiveXObject

答案 2 :(得分:1)

我没有在任何地方看到EnumeratorActiveXObject是Microsoft扩展程序。 (Enumerator也可以,至少在Windows Scripting Host中。)JSHint检查规范,而不是特定于供应商的添加。

答案 3 :(得分:1)

它们都是IE特有的,也许解析器有一个“IE”标志?除此之外,如果你真的希望你的代码通过,你需要以某种方式定义它们。

答案 4 :(得分:0)

如果这是正确的做法,我不这样做,但这对我有用

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

我将此添加到我的.jshintrc。