Javascript код не отображает желаемый результат - PullRequest
0 голосов
/ 11 мая 2011

Я написал некоторый код для отображения моих избранных в IE8, но по неизвестной причине у меня нет вывода на экран, несмотря на тот факт, что моя страница принята IE и что отображается тестовый текст «это тест» .

мой код:

<html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso 8859-1" />

   <script type="text/javascript">
        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; // Not working !
                    favorites.innerHTML += 'test'; // Not working too !
                    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 ");
            }
        }
   </script>

   </head>

   <body onload="Import()">

      <p>this is a test</p>     <!-- Working ! -->

      <div id="favorites">
      </div>
   </body>

</html>

Ответы [ 2 ]

1 голос
/ 11 мая 2011

У меня работает следующее:

var fso, favs = [];
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);
            favs.push(favString);
        }
    }
    //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 ");
    }
}

Обратите внимание, что я изменил только вывод элемента в массив с именем favs. Я также удалил переменную i, потому что она не использовалась. После запуска сценария я проверил массив в консоли инструментов разработчика, и он содержал все мои избранное.

0 голосов
/ 11 мая 2011

Если вы не получаете никакого вывода вообще, то либо fso равно нулю в методе Import, либо files.AtEnd() всегда оценивается как ложное.Поскольку вы сосредоточены здесь на IE, вы можете рассмотреть возможность размещения методов оповещения в различных местах со значениями для отладки (например, alert(fso);) по всему ожидаемому пути кода.

...