Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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 Opera 8.5中未定义JSON(json2.js)变量_Javascript_Json_Opera - Fatal编程技术网

Javascript Opera 8.5中未定义JSON(json2.js)变量

Javascript Opera 8.5中未定义JSON(json2.js)变量,javascript,json,opera,Javascript,Json,Opera,我正在使用Douglas Crockford的javascript解析库解析一些AJAX请求响应,这些响应是在一个旧的嵌入式设备上运行的js脚本,该设备的开发以支持Opera 8.5(Presto 1.0渲染引擎,Linear B)而告终 我尝试通过脚本标记“src”属性导入脚本,并在脚本标记之间逐字插入脚本。然而,一旦引用了JSON对象,我就会得到一个异常,它显示为“引用未定义的变量:JSON” 我已经在不相交的脚本中测试了全局变量,看起来效果不错 考虑到json2.js的第一行内容,这很奇怪

我正在使用Douglas Crockford的javascript解析库解析一些AJAX请求响应,这些响应是在一个旧的嵌入式设备上运行的js脚本,该设备的开发以支持Opera 8.5(Presto 1.0渲染引擎,Linear B)而告终

我尝试通过脚本标记“src”属性导入脚本,并在脚本标记之间逐字插入脚本。然而,一旦引用了JSON对象,我就会得到一个异常,它显示为“引用未定义的变量:JSON”

我已经在不相交的脚本中测试了全局变量,看起来效果不错

考虑到json2.js的第一行内容,这很奇怪:

var JSON;
if(!JSON) {
  JSON = {};
它在Opera9中工作得很好,Opera9使用相同的javascript引擎,所以我完全被难住了

我还测试了符号是否有效(是),脚本只是不想包含在内,文本中任何地方的指令插入都不会被调用

有什么建议吗

编辑:

我刚刚将所有脚本连接到脚本标记之间的单个源代码中,但它仍然无法加载,包括未能加载它后面的所有javascript。这一定是某种解析错误

编辑2:

在这里下载Opera 8.5


在您的第一个问题中添加了评论

// 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);
}

“一些浏览器(chrome、firefox,我不知道opera)本机支持JSON”,这一点我从来不知道,我已经解决了。这是一个解析问题。事实证明,它不支持正则表达式对象的缩写。