Подтвердить что ты не робот

Как остановить браузер от прокрутки при выборе текста? Потенциальная ошибка браузера?

У меня возникла странная проблема с приложением, над которым я работаю... Всякий раз, когда пользователь выделяет текст в div, который был переведен на страницу немного, браузер мгновенно начнет прокрутку. Это очень сложно описать, поэтому я сделал страницу с примером, которая показывает проблему...

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

Я также загрузил текст в pastebin для удобного просмотра (и если я когда-нибудь сниму этот URL):

http://pastebin.com/ay6LUcfP

Если вы - с помощью JavaScript - переводите() и div1 и div2 обратно в свои позиции по умолчанию, проблема не проявляется внутри div1. Он встречается только внутри div2 и только тогда, когда он находится перед пользователем (например, он был преобразован "translate()" ).

Я честно считаю, что это может быть ошибка браузера, но я не уверен, так как я не эксперт ECMAScript или DOM. Любые идеи?

EDIT: Я обновил HTML для работы как в Firefox 4+, так и в Opera 11+ (-moz-transform и -o-transform, соответственно). Я также создал новую ссылку pastebin для обновленного script (ссылка была обновлена). Проблема, похоже, не проявляется в любом из этих браузеров, поэтому, похоже, это ошибка Chrome.

EDIT 2: Я открыл отчет об ошибке для этой проблемы на сайте Chromium: http://code.google.com/p/chromium/issues/detail?id=74318

Вероятно, это ошибка в Webkit, но я дам понять людям Chromium, если это так.

4b9b3361

Ответ 1

FWIW. Проблема, по-видимому, является кодом браузера, ответственным за обнаружение, когда вы выбираете над предварительными границами (т.е. когда он должен прокручиваться, чтобы перейти с этим выбором) не получает обновленную позицию после перевода. Когда вы начинаете выбирать, он видит, что вы выбираете, и ваш курсор находится на половине экрана вверх от того места, где он полагает, что он должен быть, поэтому он быстро прокручивается. И наоборот, чтобы прокручивать вниз, вам нужно пойти в нижнюю часть контейнера, когда вы выбираете, где ваш pre bottom был перед translate().

Тем не менее, я, очевидно, не знаю, как его решить, но я почти уверен, что это ошибка браузера.