使用Facebook的JavaScript方法

时间:2011-09-24 20:37:59

标签: javascript json facebook

我在Facebook上找到了这段代码。我想以这种方式使用结构。我该如何使用这种方法?

   for (;;);{"__ar":1,"payload":null,"css":["wOyD6","Dk+z9","uUZcv"],"js":["TNp9j","12BHN"],"onload":["(function(){var k=Arbiter.subscribe(\"xhpc\\\/construct\\\/\"+this.id,function(_,c){(function(){Arbiter.unsubscribe(k);}).defer();c.mutate({\"xhpc\":\"u598502_6\",\"endpoint\":\"\\\/ajax\\\/questions\\\/save.php\",\"formType\":1,\"inputHidden\":true,\"placeholder\":\"Bir \\u015fey sor...\",\"buttonLabel\":\"Payla\\u015f\",\"blurb\":\"\\u003ca class=\\\"addPollOptionsLink\\\" rel=\\\"async\\\" ajaxify=\\\"\\\/ajax\\\/questions\\\/show_poll_composer.php?xhpc_ismeta=true\\\">Anket \\u015e\\u0131klar\\u0131 Ekle\\u003c\\\/a>\",\"content\":\"\\u003cdiv class=\\\"webComposerQuestion\\\">\\u003cinput type=\\\"hidden\\\" autocomplete=\\\"off\\\" name=\\\"source\\\" value=\\\"composer\\\" \\\/>\\u003cdiv class=\\\"mas\\\">\\u003ctextarea class=\\\"DOMControl_placeholder uiTextareaNoResize uiTextareaAutogrow questionInput fluidInput\\\" title=\\\"Bir \\u015fey sor...\\\" spellcheck=\\\"true\\\" name=\\\"question\\\" maxlength=\\\"500\\\" placeholder=\\\"Bir \\u015fey sor...\\\" id=\\\"u614163_1\\\" onfocus=\\\"return wait_for_load(this, event, function() {if (!this._has_control) {  new TextAreaControl(this).setAutogrow(true);  this._has_control = true; } });\\\">Bir \\u015fey sor...\\u003c\\\/textarea>\\u003c\\\/div>\\u003c\\\/div>\",\"hideTopicTagger\":true});c.subscribe(\"init\", new Function(\"onloadRegister(function (){Input.enableAutoCapitalize($(\\\"u614163_1\\\"), \\\"\\\");});\\n\"));});;}).apply(DOM.find(this.getRelativeTo(),\"^div.uiComposer\"))"],"bootloadable":{"maxlength-form-listener":["LayX0","nO1QQ","12BHN"]},"resource_map":{"wOyD6":{"type":"css","src":"https:\/\/s-static.ak.facebook.com\/rsrc.php\/v1\/yC\/r\/Zg0ARUxUS6N.css"},"Dk+z9":{"type":"css","src":"https:\/\/s-static.ak.facebook.com\/rsrc.php\/v1\/yw\/r\/q4nJ2ZkJtyT.css"},"uUZcv":{"type":"css","permanent":1,"src":"https:\/\/s-static.ak.facebook.com\/rsrc.php\/v1\/yO\/r\/4okS7_KFNGX.css"},"TNp9j":{"type":"js","src":"https:\/\/s-static.ak.facebook.com\/rsrc.php\/v1\/yo\/r\/8rrAXwg5z80.js"},"12BHN":{"type":"js","src":"https:\/\/s-static.ak.facebook.com\/rsrc.php\/v1\/yg\/r\/jkR6Xtb9PGX.js"},"LayX0":{"type":"js","src":"https:\/\/s-static.ak.facebook.com\/rsrc.php\/v1\/yn\/r\/HT0e0kw4zvt.js"},"nO1QQ":{"type":"js","src":"https:\/\/s-static.ak.facebook.com\/rsrc.php\/v1\/y8\/r\/Cu4Eol99gUR.js"}}}

1 个答案:

答案 0 :(得分:5)

目前尚不清楚究竟是在问什么。你不能“运行”这段代码,它是一个JSON字符串。如果要访问数据,则需要以某种方式解析它,例如jquery中的parseJSON。

我怀疑你可能会被领先的for (;;);字符串绊倒。这是一种保护设备,可以防止人们只使用eval()来处理数据。使用eval()是将JSON直接解析为javascript变量的一种旧的快捷方式,但这是一种不安全的做法。为了防止它,Facebook将for循环代码添加到字符串的前面,这样如果你试图评估它,你就会得到一个无限循环和一个挂起的浏览器。您当然可以从字符串中删除该部分,然后使用eval,但最好还是正确解析它。