Ввод текста в Firefox вызывает дрожание экрана (firefox2 winXP)

РЕДАКТИРОВАТЬ: Firefox 2 Windows XP

Действия для воспроизведения проблемы:

Firefox 2 и посетите: http://resopollution.com/rentfox/html/property_setup.html

Начните печатать и нажимайте [клавиша ввода], чтобы создавать новые строки.

Примерно после 10 нажатий [клавиша ввода] вы заметите, что экран дрожит.

Как это произошло

Это начало происходить после того, как я установил плагин для jQuery. Он находится здесь: http://resopollution.com/rentfox/html//js/textarea.js

Это делает так, чтобы текстовая область расширялась по мере ввода, в зависимости от того, сколько строк в текстовой области, вплоть до значения максимальной высоты, которое можно указать в CSS.

Я попытался отключить функцию «setHeight» в этом плагине (единственное, что динамически меняет высоту), но я все равно видел, как трясется экран.

Когда я думаю, что проблема может быть

Firefox считает, что экран просто стал больше, и компенсирует это, помещая полосу прокрутки в правую часть основного документа.

Однако он понимает, что на самом деле страница не стала больше, и убирает полосу прокрутки, вызывая тряску.

Я понятия не имею, где в коде, который заставляет Firefox думать таким образом...

Цените любую помощь.


person resopollution    schedule 07.07.2009    source источник
comment
убедитесь, что ножки вашего стола выровнены. И перестань так усердно печатать. ;)   -  person Jimmy    schedule 07.07.2009
comment
Интересно, что у меня на экране трясется только часть со 101 по 115. Начиная со 116 не качает.   -  person Scott Baker    schedule 07.07.2009
comment
Я использую FF 3.0.9, на XP SP3   -  person Scott Baker    schedule 07.07.2009


Ответы (5)


Вы можете принудительно использовать полосу прокрутки: http://css-tricks.com/eliminate-jumps-in-horizontal-centering-by-forcing-a-scroll-bar/

или скрыть переполнение div и попробовать избавиться от полосы прокрутки, попробовать overflow: hidden вместо auto в свойствах divSetup

person Zoltan Lengyel    schedule 07.07.2009
comment
Я перешел по вашей ссылке и использовал overflow-y: прокрутите тег body. Кажется, это лучший способ. - person resopollution; 07.07.2009

Не могу воспроизвести, отлично работает в Mac OSX + Firefox 3.5.

person ceejayoz    schedule 07.07.2009
comment
То же самое, Debian, Iceweasel 3.0.9. - person JosefAssad; 07.07.2009
comment
То же самое в XP Service Pack 3 + Firefox 3.5 - person TJ L; 07.07.2009
comment
Никаких проблем на XP SP3 + Google Chrome. - person SolutionYogi; 07.07.2009
comment
Мне удалось повторить WinXP FF3.5. Просто удерживайте клавишу ввода и создайте массу пустых строк. - person Jab; 07.07.2009
comment
Я не могу воспроизвести это в Vista FF3.5. - person ihumanable; 07.07.2009

Я могу воспроизвести его (Debian Lenny, IceWeasel 3.0.6), но только с очень, очень специфическим размером окна для FireFox (чуть выше 1024 пикселей, в зависимости от размера системного шрифта, оконного менеджера и количества отображаемых панелей инструментов).

Просто сделайте свою страницу немного короче или выше, и проблема исчезнет. Проблема возникает только тогда, когда добавление новой строки после 10-й или около того приводит к тому, что Firefox увеличивает страницу только настолько, чтобы появилась полоса прокрутки. Как вы и догадались.

Это крошечное поле в 10 пикселей, которое зависит от множества конкретных настроек браузера и системы. На вашей странице это поле составляет где-то около 1024 пикселей, в зависимости от системного шрифта, панелей инструментов, оформления окон и фазы луны. Переместите это поле за пределы области 1024 пикселей. Либо сделайте страницу на 40-50 пикселей короче, чтобы полоса прокрутки не появлялась (даже с большими системными шрифтами и дополнительной панелью инструментов), либо сделайте ее выше, чтобы полоса прокрутки была всегда. Также можно использовать ответ Золтана Ленгиэля в этой теме, чтобы всегда принудительно использовать полосу прокрутки.

person Sander Marechal    schedule 07.07.2009

Я могу воспроизвести это в Firefox 3.0.11 в Win XP.

Добавление overflow:hidden к тегу body, похоже, решило проблему, но это может вызвать у вас больше проблем, чем полное отключение плагина. Предоставление тега body overflow-x:scroll навсегда прикрепит к нему полосу прокрутки, но, похоже, это тоже решает эту проблему.

person ajm    schedule 07.07.2009
comment
Я сейчас изучаю этот маршрут. Возможно добавление переполнения: скрытое, а затем удаление переполнения скрытого события onBlur. Это может быть единственным способом... - person resopollution; 07.07.2009

Воспроизвел на винде, ФФ3.

Интересно, что это происходит внутри функции jQuery .height()! К сожалению, вы используете уменьшенную версию, так что это все, что я могу сделать.

person Greg    schedule 07.07.2009