jueves, 26 de enero de 2012

Los comentarios y el salto al final de la página

Otra más.

Con el nuevo sistema de comentarios, cuando uno entra a una página individual de cualquier blog que lo utilice, el navegador nos posiciona al final de la pagina, un poco más arriba del formulario en lugar de hacerlo como lo haría normalmente, al principio de ella.

En realidad no es así, no pasa en todos los navegadores, es algo que ocurre en IE, Firefox y Opera es decir, en todos ... menos en Chrome ... ¿casualidad?

Cuando buscamos información en los Grupos de Ayuda de Blogger, vemos que son muchos se quejan de lo mismo y las respuestas de los moderadores son "hemos comunicado el problema a los ingenieros" o "usen Chrome que ahí anda bien".

Son ese tipo de respuestas que dan ganas de patearlos desde acá a la luna sin etapas; de la segunda, NI HABLAR, yo quiero usar el navegador que se me de la gana porque se me da la gana y sin tener que dar explicaciones a nadie por mis elecciones.

La primera respuesta llama la atención: "informaremos del problema" ¿Quiere decir que los mentados ingenieros nunca miraron si su creación funciona en los distintos navegadores tal como hace cualquiera de nosotros que tenga dos dedos de frente? ¿Será posible que sean tan negligentes? Es una pregunta retórica, no hace falta contestarla.

De todos modos, una solución muy parcial al problema pueden verla activada en la misma entrada demo de siempre.

Digo que es parcial porque no soluciona el problema en Internet Explorer aunque parece hacerlo en Firefox y en Opera.

Para conseguir esto, que espero que sólo sea temporal, tenemos que hacer dos cosas sencillas. Primero, buscamos el script de los comentarios anidados y allí, modificamos el atributo defer tal como indica Oloman en una de sus entradas más recientes. En lugar de esto:
<script defer='defer' expr:src='data:post.commentSrc' type='text/javascript'/>
ponemos esto:
<script async='async' expr:src='data:post.commentSrc' type='text/javascript'/>
Ahora, agregamos algo así antes de </head>
<style>
#comments {
left: -10000px;
position: fixed;
top: -10000px;
}
</style>
<script>
//<![CDATA[
window.onload = (function(){
document.getElementById("comments").style.position = "static";
})
//]]>
</script>
La regla de estilo sacará el DIV contenedor de los comentarios fuera de la ventana del navegador así que no lo veremos y el script, se ejecutará cuando se haya cargado la página, restaurando la posición de ese DIV y haciéndolo visible otra vez; de ese modo, se evitará que el script interno de Blogger que escribe ese contenido, afecte al resto el sitio.

Si se usa jQuery, en lugar de document.getElementById() podría ponerse algo así:
$("#comments").css({"position":"static"});
es indistinto, ambas cosas hacen lo mismo.

No hay garantías de que esto funcione en todos los blogs pero, se puede probar y ver.

No hay comentarios:

Publicar un comentario