Код Javascript не принимается валидатором (JSHint)
Я написал код для отображения моих закладок в IE8. Для проверки я использовал JSHint и получил следующие ошибки:
- var files=новый перечислитель (FavFolder.Файлы); "перечислитель" не определен. (Строка 14)
- Перечислитель (FavFolder.Подпапки); "перечислитель" не определен. (Строка 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 ответов:
Jslint обычно используется для javascript во всех браузерах, не указанных IE, поэтому
Enumerator
иActiveXObject
или другие указанные браузером объекты не поддерживаются.Если вы разрабатываете только для IE, просто игнорируйте эти предупреждения.
Также можно добавить
Enumerator, ActiveXObject
в текстовое поле предопределенное.
Enumerator и Открытие несколько глобальных переменных, которые определяются внешне. Вы можете сказать JSHint игнорировать их, поместив следующее в верхней части вашего JavaScript:
/*global Enumerator: false, ActiveXObject: false */
Я не вижу
Enumerator
, определенного где-либо, иActiveXObject
Является расширением Microsoft. (Enumerator
может быть также, по крайней мере, в Windows Scripting Host.) JSHint проверяет спецификацию, а не дополнения, относящиеся к конкретному поставщику.