Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用JSON.HTA中的JS将字符串从文件转换为对象,而不使用JSON.parse_Javascript_Json_Wsh_Hta - Fatal编程技术网

Javascript 如何使用JSON.HTA中的JS将字符串从文件转换为对象,而不使用JSON.parse

Javascript 如何使用JSON.HTA中的JS将字符串从文件转换为对象,而不使用JSON.parse,javascript,json,wsh,hta,Javascript,Json,Wsh,Hta,我有一个包含JS的.HTA文件,如下所示: <script> var fso = new ActiveXObject('Scripting.FileSystemObject'); var configsHandle = fso.OpenTextFile('configs.json', 1); var configs = configsHandle.ReadAll(); configsHandle.Close(); alert(configs); </script> 我可

我有一个包含JS的.HTA文件,如下所示:

<script>
var fso = new ActiveXObject('Scripting.FileSystemObject');
var configsHandle = fso.OpenTextFile('configs.json', 1);
var configs = configsHandle.ReadAll();
configsHandle.Close();
alert(configs);
</script>
我可以成功地以字符串形式获取json文件的内容。但是我无法使用
JSON.stringify()
将其转换为JSON,然后使用
JSON.parse()
对其进行解析,因为我得到了错误

JSON是未定义的

我不知道如何将字符串转换为一个对象/数组,然后至少将其解析为一个关联数组

alert(configs['default']['content']);

另外,我需要它在Win7的Microsoft HTML应用程序主机程序上工作(即不在Chrome中,也不在Linux或其他操作系统中)

使用更新的IE版本获得JSON支持。我在Win7上安装了IE8,如果我通过这个IE打开带有JS
alert(navigator.userAgent)
的简单html页面,我会看到MSIE8.0。但是,如果我使用Microsoft HTML应用程序宿主程序打开的hta页面具有相同的
alert()
,我会看到MSIE 7.0。为什么以及如何使IE8被HTA主机程序使用?答案在我上面链接的帖子中。“如果您的系统中安装了IE11,您可以通过使用
使用最新版本的JavaScript。当然,将内容设置为
IE=edge
不会覆盖已安装IE的旧版本,而是使用最新的可用模式。”,它支持JSON。有一个问题:我需要检测使用了哪个IE,但正如我上面所说的,在添加
x-ua-compatible
meta标记JSON后,我仍然得到IE7的
alert()。那么,我如何才能得到使用IE的正确版本呢?使用您在回答中提到的
ScriptEngine
功能,我在两种情况下都得到了相同的
JScript 5.8.17514
:有meta标记和没有meta标记。一种方法是告诉用户在下载应用程序之前,应用程序需要IE9或更高版本。在应用程序中,您可以使用ScriptEngine功能检测使用过的IE版本,如果检测到小于9的版本,则可以显示警告。例如,安装在我的机器上的IE11返回11.0.16384,其中包含我在第一条注释中链接的答案中的代码段。我不知道还有什么其他版本会返回。
alert(configs['default']['content']);