Как остановить прокрутку браузера при выделении текста?Потенциальная ошибка браузера? - PullRequest
12 голосов
/ 26 февраля 2011

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

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

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

http://pastebin.com/ay6LUcfP

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

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

РЕДАКТИРОВАТЬ: Я обновил HTML для работы как в Firefox 4+, так и в Opera 11+ (-moz-transform и -o-transform соответственно).Я также создал новую ссылку для обновленного скрипта (ссылка была обновлена).Кажется, что проблема не проявляется ни в одном из этих браузеров, так что это определенно ошибка Chrome.

РЕДАКТИРОВАТЬ 2: Я открыл сообщение об ошибке для этой проблемы наСайт Chromium: http://code.google.com/p/chromium/issues/detail?id=74318

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

1 Ответ

1 голос
/ 13 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...