基本上,socket.io使用native
JSON来包含和解码数据包,我的问题是我不得不使用这个版本的原型来改变JSON行为.什么时候我应该进入服务器,如:
socket.on(‘event’,function(a,b,c),
我明白了
socket.on(‘event’,function([a,b,c],undefined,undefined).
一种解决方案是在json.js上注释这一行:
/* socket.io-client/lib/json.js
if (nativeJSON && nativeJSON.parse){
return exports.JSON = {
parse: nativeJSON.parse
, stringify: nativeJSON.stringify
};
}
*/
但这种变化严重影响了业绩.
有没有办法恢复原生JSON功能?
是否可以创建一个隐藏的iframe来克隆JSON对象以恢复旧功能?
最佳答案 一种解决方案是杀死Prototype的toJSON()扩展方法:
if(window.Prototype) {
delete Object.prototype.toJSON;
delete Array.prototype.toJSON;
delete Hash.prototype.toJSON;
delete String.prototype.toJSON;
}
然后你应该能够毫无问题地使用浏览器的原生JSON.parse / stringify方法.