我正在使用Douglas Crockford的javascript解析库来解析一些js脚本的AJAX请求响应我正在一个旧的嵌入式设备上运行,该设备的开发以Opera 8.5支持结束(Presto 1.0渲染引擎,线性B)。
我尝试通过脚本标记“src”属性导入脚本,并在脚本标记之间逐字插入脚本。但是,只要引用JSON对象,我就会得到一个异常,其中显示“引用未定义的变量:JSON”。
我已经在不相交的脚本中测试了全局变量,这似乎工作得很好。
考虑到json2.js的第一行:
,这很奇怪var JSON;
if(!JSON) {
JSON = {};
它在Opera9中工作正常,它使用相同的javascript引擎,所以我完全被难倒了。
我还测试了表示符号是否有效(是),脚本只是不想被包含,文本中任何位置的检测都不会被调用。
有什么建议吗?
编辑:
我刚刚将所有脚本连接成脚本标记之间的单个源,但仍无法加载,包括无法加载其后的所有javascript。它必须是某种解析错误。
EDIT2:
在这里下载Opera 8.5
答案 0 :(得分:0)
添加了第一个问题评论
// delcare a global variable named JSON.Nothing will happen if JSON already declared.
var JSON;
// if JSON not initlized
if(!JSON) {
JSON = {}; // initlize JSON object
}
提出第二个问题 一些浏览器(chrome,firefox,我不知道Opera)本机支持JSON,你可以通过下面的代码进行测试和修复
if (!window.JSON) {
//load JSON libaray
head = document.getElementsByTagName("head")[0];
script = document.createElement("script");
script.src = "path/to/json2.js";
script.onload = script.onreadystatechange = function () {
if (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") {
head.removeChild(script); //remove the script tag we dynamically created
alert(JSON);
}
}
head.append(script);
}