Google Chrome ломается, когда онфокус устанавливает выбранный размер - PullRequest
3 голосов
/ 02 апреля 2009

Следующий javascript для изменения размера списка разрывов в Google Chrome. Это работает, когда вкладка в поле, но нажатие на него приводит к «Aw, Snap!» страница ошибки.

<select onfocus="this.setAttribute('size', 3);">
<option>selectList with onfocus</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>

Прекрасно работает в FF и IE. Это какой-то конфликт между onfocus (нет проблем, если я реализую его onClick) и настройкой атрибута size. Мне сказали, что в Safari он тоже ломается.

Любая помощь, идеи или обходные пути приветствуются.

(П.С. Да, я знаю, это не очень хорошая форма для изменения размера списка выбора, но это то, что хочет босс / клиент)

Ответы [ 3 ]

6 голосов
/ 02 апреля 2009

Измените строку с выбором на это:

<select onfocus="var that = this; setTimeout(function() {that.setAttribute('size', 3);}, 0);">

Это работает для меня в Chrome. Я не пробовал в Safari, но подозреваю, что это сработает. По сути, все, что мы здесь делаем, это экранирование стека вызовов с помощью setTimeout, который, похоже, позволяет обойти ошибку в Webkit.

1 голос
/ 31 января 2011

Я также нашел это:

Так что, похоже, это проблема WebKit, и по какой-то причине они не хотят ее исправлять (сделать ее соответствующей стандартам).

0 голосов
/ 13 апреля 2010

Насколько я могу судить, Google Chrome игнорирует ВСЕ атрибуты выбора размера для нескольких блоков выбора.

См. Ссылку:

http://www.w3schools.com/TAGS/tryit.asp?filename=tryhtml_select_size

Используйте любой другой браузер, затем попробуйте Google Chrome. Просто основные атрибуты HTML полностью игнорируются Chrome.

...