由于使用了 jQuery 1.7.2 JSON.parse,我在 IE10 中遇到了众所周知的 SCRIPT1014 错误。我一直在阅读关于这个问题的几个问题,但最明确的答案是我没有找到任何实际通用的响应。我发现的所有内容基本上都是“检查数据是否有效”或“它可能是一个错误”。
但是,我找到了有关此错误的链接。它提出了几个解决方案,但我真的不知道如何实现它们(我对 JS 和 HTML 不太了解)。
这是调用 JSON.parse 的一段代码:
var jsonPlaylist;
try {
if (window.XMLHttpRequest) {
xmlDoc = new window.XMLHttpRequest();
xmlDoc.open("GET", 'playlist.xml', false);
xmlDoc.send("");
jsonPlaylist = xmlToJson(xmlDoc.responseXML);
} else if (ActiveXObject("Microsoft.XMLDOM")) {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load('playlist.xml');
jsonPlaylist = xmlToJson(xmlDoc);
}
if (window.XMLHttpRequest || ActiveXObject("Microsoft.XMLDOM")) {
var str1 = JSON.stringify(jsonPlaylist);
var str2 = str1.replace(/{(.*?)\[{"@attributes":{"src"/, '[{"0":{"src"');
var str3 = str2.replace(/@attributes/g, '0');
var cut = str3.substring(0, str3.length - 2);
var ret = JSON.parse(cut);
return ret;
}
alert("Error while loading the playlist.xml file.");
return "[0:{src: \'video/default.mp4\', type: \'video/mp4\'}, 0:{src: \'video/default.mp4\', type: \'video/mp4\'}]";
} catch (err) {
return "[0:{src: \'video/default.mp4\', type: \'video/mp4\'}, 0:{src: \'video/default.mp4\', type: \'video/mp4\'}]";
}
}
并且请不要建议放弃对 IE 的支持:它是唯一同时可靠支持 H.264 和 kiosk 模式的浏览器(如果有人知道另一个具有这些功能的浏览器并且它不会抛出这个 1014 问题,我会不过很高兴改变)。
编辑:
这是记录的“剪辑”:
[{"0":{"src":"video/default.mp4","type":"video/mp4"}},{"0":{"src":"video/default.mp4","type":"video/mp4"}}]
这是 playlist.xml 的内容,从中生成了“jsonPlaylist”以及“cut”:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><playlist><vid src="video/default.mp4" type="video/mp4"/><vid src="video/default.mp4" type="video/mp4"/></playlist>