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, hay una solución muy parcial. 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.

25 comentarios:

Adrián J. Messina  

Sip, funciona en el demo, pero valla a saber uno porque en el mío no.
No sé si le pasará a algunos más.
Gracias por el dato, igualmente.

Responder
JMiur  

¿Lo tienes colocado? Sería bueno a ver si se descubre el motivo. Así, en el aire, se me ocurre que puede ser que influya la exitencia o ejecución de otros scripts que también se carguen mediante un onload.

Responder
Adrián J. Messina  

Sí, está todo agregado, CSS, Script y async en commentSrc .
Como siempre mi plantilla es su plantilla, para que experimente.
El blog es panoramicadelredactor.blogspot.com

Abrazo.

Responder
Llusan  

Es demasiado y estoy seguro que en el futuro habrán más cosas como éstas. Más convencido que nunca a permanecer utilizando Disqus como sistema de comentarios.

Responder
Oloman  

Muy buena idea. A mí sí me ha dado resultado este truco. Probado en IE8 y FF8, el post se queda al principio, dónde debe. Sólo he quitado el punto que pusiste delante del sostenido. Supongo que se trata de una errata y puede que por eso no le funcionara a Adrián.

Responder
Oloman  

Una cosa más por si te sirve de pista. Algunos dicen tener problemas con los comentarios cuando colocan algún gadget de Twitter. A mí no me pasa, pero si incluyo este truco y además algo de Twitter, entonces sí que me desaparecen los comentarios. El problema concreto es que no se ejecuta la instrucción javascript de volver a posicion "static" en ese caso.

Responder
Unknown  

Jmiur, una pregunta muy muy tonta, por qué no utilizar

Agregar reply en los comentarios

Responder
JMiur  

Llusan
No hay duda que esto asusta.

Oloman Oloman
Arreglado lo del punto extra; ahora me voy a fijar lo de Adrián :D
En mis ejemplos no logro que funcione en IE8 pero, algo es algo.
En tus entradas, leí que había problemas con algunos gadgets de Twitter y varios me comentaron lo mismo. Pensando en voz alta, todo debe ser un tema del orden en que se ejecutan los scripts; en este momento, no estoy usando ninguno pero veré de copiar el de tu sitio a ver si logro entender algo. Lo primero que se me ocurre es hacer lo mismo con los scripts de Twitter, forzarlos con async o cargarlos dentro de un window.onload

Kenpachi
Puede ser que ocurra eso que dice Oloman, que tengas un gadget de Twitter y allí también se genere el conflicto.
Son demasiados errores, esto se vuelve engorroso y claro, lo de Chrome s PURA CASUALIDAD :D

Graciela
Es algo que a mi, me dejó de funcionar hace bastante tiempo y por eso lo saqué. No me preguntes por qué ... es un misterio.
De todos modos, como en tu blog funciona perfectamente, es una alternativa lógica aunque creo (es intuición) que en algún momento, Blogger decidirá que sólo hay un modelo de comentarios.

Adrian:
Efectivamente, tal como pensaba Oloman, el problema puede ser que has copiado mi error tipográfico; dice:
.#comments
y debería decir:
#comments
sobra un punto delante.

Responder
Unknown  

No deseo enojarme con ésta gente, por mi, gastar energías que necesito para otras situaciones no :((

Responder
Adrián J. Messina  

Al menos en Firefox 9, IE8 y Aurora 11 no funciona, debo tener algún que otro tipo de error en mi plantilla o será cosa de Blogger.
Gracias Oloman y a vos.
Buen finde.

Responder
JMiur  

Adrián. Estás usando Prototype+Scriptaculous y jQuery juntos en la misma página lo cual es conflictivo siempre. Aunque usas jQuery.noConflict() para resolver eso, de todas maneras, está mal porque primero se debe cargar Prototype y luego jQuery que requerirá posteriormente,que se cambie la forma de utilizar las funciones.

En este momento, en ese demo, jQuery no funciona y por lo tanto, no funciona lo de los comentarios.

De ninguna manera es recomendable usar dos librerías juntas, no tiene ningún sentido y, tal como hemos repetido en varios comentarios, los nuevos comentarios no funcionan junto a Prototype+Scriptaculous así que yo, quitaría ese script y cargaría jQuery solamente, eliminado lo de jQuery.noConflict() que suele traer problemas y que, utilizando la librería de modo natural, es algo innecesario.

Responder
Adrián J. Messina  

Sí, ocurre que tenía un botón que requería de Scriptaculous, y como tengo un menú que necesita jquery intenté ver la forma en que funcionen las tres cosas, menú, botón y comentarios, pero se ve que no.
En este momento está funcionando Jquery, borré Scriptaculous cargué el script de Jquery al natural. Continúa lléndose hacia abajo al ingresar a la entrada.
Abrazo!

Responder
JMiur  

Seguimos con suerte. Otro error de sintaxis. En lugar de cerrse con una llave:
}
debe cerrarse así:
})

Responder
Unknown  

Me funcionó lo que comentas al final:
$("#comments").css({"position":"static"});
He tenido que escribir una entrada al respecto. Estrené la etiqueta "blogger" en mis entradas hace poco, y me encuentro con estas cosas al poco tiempo... Espero que, si me mudo a Wordpress, sea por otros motivos...
Muchas gracias por tu ayuda, soy lector fiel (por feed), y me encanta tu sitio. ¡Suerte en todo!

Responder
JMiur  

Saludos, Jorge, me alegra que funcionara :-)

Responder
Adrián J. Messina  

Corregido el error de la llave. Probé con la escritura para el caso de Jquery, aún así sigue lléndose hacia abajo.
A veces pienso que por más que renueve la plantilla Blogguer está en mi contra... ¿No puede funcionar algo de una en mi blog? :S

Responder
JMiur  

No pongas el estilo en el DIV, quita eso de style='position: static;'

<div class='OTROScomments' id='comments' style='position: static;'>

o por el contrario si vas a poner el estilo allí, deberías poner:
style='position: fixed;'

Responder
Adrián J. Messina  

¡Funcionó! ¡Por fin!
div class='OTROScomments' id='comments' style='position: fixed;'
Espero que les sirva a todos.
Gracias Jorge.

Responder
Anónimo  

Si resulto tal cual exploicas, en mozilla el cual utilizo si funca ya revisare en los demas.

Responder
Tapestry Workerman  

Hola JMiur.
Tengo el problema de salto de página que tratas aquí cuando entras a una entrada en particular, pero además, tengo tres reproductores que suenan independientemente según sea una entrada en particular, una página o si quieres que se reproduzca en la principal, bueno, pues en IE se reproducen todos... por lo que se ve no responde a condicionales, no sé si tendrá solución.
Ya contarás.
Un saludo.

Responder
JMiur  

Me alegra que resultara, Adrián :D

encuentroswingers
En IE no funciona.

Tapestryworkerman
Fíjate en esta entrada a ver si el problema es el descripto allí.

Responder
NMitra  

¿Cuál es su opinión?

http://macrolayer.blogspot.com/2012/01/full-html-access-for-blogger-comments.html

Responder
JMiur  

Es relativamente sencillo crear etiquetas o pseudo-etiquetas tal como se usan en muchos foros estilo [img]xxxx[/img] y luego, usando un script, buscar eso en el texto y cambiarlo por una etiqueta HTML. Es el mismo concepto que se usa para, por ejemplo, agregar emoticones.

El problema con esas cosas, más allá de desarrollar un script que funcione, es que se debe tener muchísimo cuidado con el tipo de contenido extra permitido ya que se corren severos riesgos de seguridad porque se abre la puerta a la inyección de códigos que no podremos controlar. Incluso las imágenes pueden contener códigos ejecutables ocultos.

Es por eso que los servicios de blogs (no sólo Blogger) limitan tanto la posibilidad de agregar código HTML en los comentarios.

Usado con prudencia, pude ser útil pero en lo personal, lo limitaría mucho y de ninguna manera permitiría el agregado de imágenes u otros objetos.

Responder
NMitra  

Gracias por la respuesta detallada! Yo también, después de la deliberación, llegó a esta conclusión.

Responder
JMiur  

Me alegra que sirviera. En lo personal, no lo usaría pero, si se usa, debe hacerse con cuidado y limitarlo.

Responder

¿Quiere dejar un comentario?

recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...

Nota: sólo los miembros de este blog pueden publicar comentarios.

Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.

Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...

 
CERRAR