1

Тема: JS: JSON5

По местным мотивам написал вот такой код:

var JSON5 = loadHTMLscript('JSON5', "https://unpkg.com/json5@^2.2.0/dist/index.min.js");
if (JSON5 == undefined || !'stringify' in JSON5) {
  WSH.Echo("JSON5 not loaded, increase sleep.");
  WSH.Quit();
};

var obj = {
    "objName": {
        "item1": "value 1",
        "item2": "value 2"
    }
};

WSH.Echo("obj: " + JSON5.stringify(obj));
// output: obj: {objName:{item1:'value 1',item2:'value 2'}}

function loadHTMLscript(name, url, sleep) {
  var document = WSH.CreateObject('htmlfile');
  document.write('<meta http-equiv="x-ua-compatible" content="IE=Edge" /><script src="' + url + '"></script>');
  WSH.Sleep(sleep || 500);
  document.close();
  return document.parentWindow[name];
}

Значение для слипа подобрано экспериментально.
Пробовал делать цикл с минимальной задержкой и повторным чтением document.parentWindow[name] - получаю бесконечный цикл, похоже значение где-то кэшируется.
Нет ли какого-то легального способа определить, что внешний скрипт загружен?

2

Re: JS: JSON5

Я рекомендую воспользоваться XMLHttpRequest или его аналогами, например: Msxml2.XMLHttp, Microsoft.XMLHTTP, MSXML2.ServerXMLHTTP. У них есть метод .onreadystatechange, с помощью которого можно определять завершение загрузки.

( 2 * b ) || ! ( 2 * b )