基本上,socket.io 使用 nativeJSON 来编码和解码数据包,而我的问题是我必须使用这个版本的原型来改变 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 方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)