Tengo una página que contiene una serie de botones "Me gusta" de Facebook, incrustados mediante la técnica fbml en línea (en lugar de iframe). Suficientemente simple. La página funciona bien, todo funciona como se espera.¿Por qué, por ejemplo, refluye DOM cuando se encuentra con los elementos fbml <fb:xxx> cuando se utilizan correctamente los fml xmlns?
Sin embargo ...
Una vez que añadir la declaración de espacio de nombres xmlns:fb="http://www.facebook.com/2008/fbml"
al documento Estoy notando una degradación radical de la página inicial tiempos de render en IE. Una inspección más cercana (usando las herramientas de desarrollador ie8) revela que todo el DOM parece ser "refrescante" o "refluir" una y otra vez, durante un breve período después de que la página se haya cargado inicialmente. Un poco más de borrado revela que el número de reflujos es aparentemente proporcional al número de elementos <fb:xxx>
en el documento.
Al eliminar la declaración xmlns, el problema desaparece.
¿Alguien ha experimentado esto antes?
ACTUALIZACIÓN:
Algunos de excavación más ha revelado algunos detalles más ... La cuestión es de hecho que IE se vuelve a fluir a la página, incluyendo volver a ejecutar las secuencias de comandos en línea y así sucesivamente. La causa no parece ser la inclusión de las xmlns per se, sino la representación xfbml de los botones mismos. Agregar los xmlns simplemente activó el renderizado xfbml, sin los xmlns, los botones que nunca se procesaron en primer lugar. El siguiente marcado ilustra el problema.
<!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>
Cuando se ejecuta en ie, el ejemplo anterior genera 3 alertas, esperaría ver solo una.
Para el registro, es que esto ocurra [aquí] (http://jsfiddle.net/alexdickson/NStxL/) ¿para ti también? – alex
@alex Solo recibo la alerta en IE9, ya no tengo IE8 para probar – Phil