我有一个包含许多facebook"Like"按钮的页面,使用内联fbml技术嵌入(而不是iframe).很简单.页面渲染正常,一切都按预期工作.
然而...
一旦我将xmlns:fb="http://www.facebook.com/2008/fbml"名称空间声明添加到文档中,我注意到IE中初始页面呈现时间的急剧下降.仔细检查(使用ie8开发人员工具)显示整个DOM在页面初始加载后的短时间内反复出现"刷新"或"回流".一些进一步的捣乱揭示了回流的数量显然与<fb:xxx>文件中的元素数量成比例.
删除xmlns声明会使问题消失.
以前有人经历过吗?
更新:
一些进一步的挖掘揭示了一些更具体的问题......问题确实是IE正在重新流动页面,包括重新执行任何内联脚本等等.原因似乎并不包含xmlns本身,而是按钮本身的xfbml呈现.添加xmlns只是触发了xfbml渲染,没有xmlns,按钮从未在第一时间呈现.以下标记说明了该问题.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<script type="text/javascript">
alert('some inline js');
</script>
</head>
<body>
<div id="fb-root"></div>
<div>
<fb:like href="http://example.local/1" layout="button_count" show_faces="false" width="80" action="like" font="arial" colorscheme="light"></fb:like>
<fb:like href="http://example.local/2" layout="button_count" show_faces="false" width="80" action="like" font="arial" colorscheme="light"></fb:like>
<fb:like href="http://example.local/3" layout="button_count" show_faces="false" width="80" action="like" font="arial" colorscheme="light"></fb:like>
</div>
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1" type="text/javascript"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当在ie中运行时,上面的示例生成3个警报,我希望只看到一个.