2011-01-08 62 views
3

我有误差缩小到以下的制造在谷歌浏览器不同的行为代码的组:FireFox和Google Chrome中的不同JavaScript对象字面行为?

示例代码:http://jnvxxx.appspot.com/rpc/static_server?key_=testjs.html

火狐输出:您好1 [对象的对象] 192您好2

铬输出:嗨1 [对象对象] undefined嗨2

任何想法很热,以获得在谷歌浏览器中工作的属性。

谢谢。

+0

你没有在任何地方使用JSON,只是JavaScript对象文字。 – 2011-01-08 09:01:24

+0

@Matthew,对不起。其实我从json.dumps(python对象)获取这个JavaScript文字..这就是为什么我把它放在第一位JSON解析错误任务。 – ramu 2011-01-08 09:18:41

回答

5

您正在访问window.status属性,该属性用于控制状态栏中的文本。参见:http://www.w3schools.com/jsref/prop_win_status.asp

显然,必须首先在所有主流浏览器中打开此功能,因此显然不同的浏览器在关闭时会执行不同的操作。 Chrome将状态属性的值更改为string,因此它变成了一个隐含但熟悉的字符串"[object Object]",它没有entry_count属性。 Firefox在status属性中完整保留该对象。

底线:window.status已被用于其他事情;为您的变量使用不同的名称。

编辑:

正如下面提到的,更好的方法做尽,这将是封装它的功能范围,只要你不打算反正在其他地方使用它:

(function() { 
    var myStatus = {...}; 
    // Do something with myStatus, preferably not document.write ;) 
}()); 

var a = typeof myStatus; // a === 'undefined'. 

这样,变量将只在函数范围内可见。

相关问题