什么是 #fbml=1
在做<script src="http://connect.facebook.net/en_US/all.js#xfbml=1">
? (这是从 http://developers.facebook.com/docs/reference/plugins/like/ 获得的官方 Facebook Like 按钮代码)
此外,在 Fiddler 中,我看到它只是在做一个
GET /en_US/all.js HTTP/1.1
但尝试删除 #fbml=1
,页面将不会显示 Facebook Like 按钮。这是什么机制?
最佳答案
标签永远不会发送到服务器,但 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);
关于facebook - <script src "#fbml=1"> 中的 ="http://connect.facebook.net/en_US/all.js#xfbml=1"在做什么? URL 没有哈希,但没有它,它将无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5574612/