在<script src =“http://connect.facebook.net/en_US/all.js#xfbml=1”>中做什么是“#fbml = 1”? URL没有哈希但没有哈希,它将不起作用</script>

时间:2011-04-07 00:42:51

标签: facebook http facebook-like

#fbml=1<script src="http://connect.facebook.net/en_US/all.js#xfbml=1">中做了什么? (这是从http://developers.facebook.com/docs/reference/plugins/like/获得的官方Facebook赞按钮代码)

另外,在Fiddler,我看到它只是做了一个

GET /en_US/all.js HTTP/1.1

但请尝试删除#fbml=1,该页面不会显示Facebook赞按钮。这里的机制是什么?

1 个答案:

答案 0 :(得分:2)

Hashtags永远不会发送到服务器,但Javascript可以通过location.hash访问它,或者当它在脚本标记中使用时,可以访问标记的src属性。

这很可能是负责它的代码:

window.setTimeout(function () {
    var a = /(connect.facebook.net|facebook.com\/assets.php).*?#(.*)/;
    FB.Array.forEach(document.getElementsByTagName('script'), function (d) {
        if (d.src) {
            var b = a.exec(d.src);
            if (b) {
                var c = FB.QS.decode(b[2]);
                FB.Array.forEach(c, function (f, e) {
                    if (f == '0') c[e] = 0;
                });
                FB.init(c);
            }
        }
    });
    if (window.fbAsyncInit && !window.fbAsyncInit.hasRun) {
        window.fbAsyncInit.hasRun = true;
        fbAsyncInit();
    }
}, 0);