2011-02-26 12 views
11

Tengo un problema extraño con una aplicación en la que estoy trabajando ... Cada vez que el usuario resalta un texto en un div que se ha traducido un poco en la página, el navegador comenzará a desplazarse hacia arriba. Es realmente difícil de describir lo que he hecho una página de ejemplo que muestra el problema ...¿Cómo detener el desplazamiento del navegador cuando se selecciona texto? Posible error del navegador?

http://riskable.com/files/scroll_problem.html

También he subido el texto a pastebin para facilitar la visualización (y si alguna vez tomo esa URL en otro momento):

http://pastebin.com/ay6LUcfP

Si - por medio de JavaScript - translate() tanto div1 y div2 de vuelta a sus posiciones por defecto el problema en sí no presenta dentro div1. Solo ocurre dentro de div2 y solo cuando está enfrente del usuario (por ejemplo, ha sido transformado por un "translate()").

Honestamente, creo que esto podría ser un error del navegador, pero no estoy seguro ya que no soy un experto en ECMAScript o DOM. ¿Algunas ideas?

EDIT: He actualizado el HTML para que funcione tanto en Firefox 4+ como en Opera 11+ (-moz-transform y -o-transform, respectivamente). También creé un nuevo enlace pastebin para el script actualizado (el enlace se ha actualizado). El problema no parece mostrarse en ninguno de esos navegadores, por lo que parece ser definitivamente un error de Chrome.

EDIT 2: me han abierto un informe de error para este problema en el sitio Cromo: http://code.google.com/p/chromium/issues/detail?id=74318

Es probablemente un error en Webkit pero voy a dejar que la gente de cromo saber si ese es el caso .

+9

No me importa lo que digan. Es muy gracioso. Lo siento, ojalá pudiera ayudar. – zdyn

+4

¡Guau! Eso es raro. FWIW: Lo vi en Chrome y Apple Safari. Firefox e IE8 no lo hicieron. –

+0

No puedo reproducir esto en Fx 4.0b12, para el registro. –

Respuesta

1

Fwiw, Ithe problema parece ser el código del navegador responsable de detectar cuando se está seleccionando sobre los límites de la pre (es decir, cuando debería desplazarse para ir con esa selección) no está recibiendo la posición actualizada después de traducir. Cuando comienza a seleccionar, ve que está seleccionando, y el cursor está a media pantalla de donde cree que está el preestablecido, por lo que se desplaza muy rápido. Por el contrario, para hacer que se desplace hacia abajo, debe ir al fondo del contenedor mientras selecciona, donde estaba la parte inferior de su pre antes de translate().

Dicho esto, obviamente no tengo ni idea de cómo resolverlo, pero estoy casi seguro de que es un error del navegador.

Cuestiones relacionadas