Javascript 如何使用JSON.HTA中的JS将字符串从文件转换为对象,而不使用JSON.parse
我有一个包含JS的.HTA文件,如下所示: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> 我可
<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']);