我遇到了这个错误。该应用程序似乎工作正常,但它会导致Firebug停止脚本。
JSON.parse: unexpected character
Line 9 (all.js)
所讨论的行看起来像这样:
FB.provide('JSON',{stringify:function(a){if(window.Prototype&&Object.toJSON){return Object.toJSON(a);}else return JSON.stringify(a);},parse:function(a){return JSON.parse(a);},flatten:function(c){var a={};for(var b in c)if(c.hasOwnProperty(b)){var d=c[b];if(null===d||undefined===d){continue;}else if(typeof d=='string'){a[b]=d;}else a[b]=FB.JSON.stringify(d);}return a;}});
我认为该异常是由Firefox内置的JSON解析器抛出的,在该行定义的parse方法中。传递给解析的字符串看起来像这样:
"cb=f49f4551da8c7e&origin=http%3A%2F%2Flocalhost%3A9292%2Ff3726c758943f5&relation=parent&transport=postmessage&frame=f2b4bb038098548&code=2.AQ...fU&signed_request=_7hf...E3OCJ9&access_token=AAADj6D4s...ZDZD&expires_in=6650"
显然这不是一个有效的JSON字符串,因此解析错误。
该字符串来自使用xd_proxy.php传递的事件,上面的字符串是该iframe的URL的哈希值。
我已经搜索了一下,没有看到任何关于这个错误的有用信息。
事实证明,这个异常被正确捕获并由调用它的javascript代码处理,但由于我将Firebug设置为"在所有错误上中断",因此无论该异常是否被捕获,它都会停止执行。
所以修复实际上是在Firebug中关闭"break on all errors",这对Facebook脚本来说根本不是问题。