Safari Javascript Issue - PullRequest
       10

Safari Javascript Issue

2 голосов
/ 28 ноября 2009

В настоящее время я работаю над программой Javascript для моей компании (Leader Technologies), которая используется для регистрации продуктов для Logitech. URL для этого: http://wwwtest.onlineregister.com/logitechreg/

Моя программа выглядит отлично на всех веб-браузерах (включая IE 6), которые я пробовал, кроме Safari 4. В Safari 4 после выбора местоположения, языка и категории продукта при нажатии на фактическое меню продукта ( id = WHPR), div, отвечающий за отображение продукта, отображается, но выпадающие списки все еще видны. Во всех других браузерах раскрывающийся список и возможные варианты внутри него скрыты (что является предполагаемым поведением).

Непосредственно, мой вопрос: могу ли я успешно скрыть этот раскрывающийся список в Safari 4 БЕЗ полного опустошения раскрывающегося списка и его повторного заполнения только выбранным значением? Я бы предпочел не делать этого, если это вообще возможно, но если это единственный способ достичь своей цели, я могу изменить сайт дополнительно.

Я считаю, что проблема в том, где я устанавливаю слушателей на <select>:

<select id="WHPR" class="ui-formulate-ignore" style="width: 280px; visibility: visible;" onchange="whprChanged(this);" onfocus="displaySelector(form, document.getElementById('WHPR')); document.getElementById('imageHolder').focus(); this.blur();" name="WHPR">

Спасибо всем большое за то, что нашли время помочь мне. Я действительно ценю всю помощь, доступную на этом сайте.

-Брайан Дж. Стинар-

Ответы [ 2 ]

5 голосов
/ 29 ноября 2009

Не втискивать в свой стиль, но подключение слушателей, как вы делаете, не очень чисто Почему бы не воспользоваться способностью jQuery справляться с любыми несоответствиями браузера? Страница, на которую вы ссылаетесь, уже загружает ее.

См. http://docs.jquery.com/Events/bind

1 голос
/ 29 ноября 2009

Я думаю, что это какая-то ошибка в Safari - например, если вы делаете .focus() nof для DIV, но для другого элемента ввода, такого как текстовое поле, то после нажатия на поле выбора оба будут иметь фокус (или на самом деле, фокус останется в окне выбора, а текстовое поле будет иметь фокус только при более толстой границе, чем обычно).

Как бы то ни было, быстрый и грязный метод для достижения цели будет состоять в том, чтобы удалить поле выбора со страницы (отображение: нет) и затем вернуть его обратно (отображение: встроенное).

заменить this.blur() следующей командой

this.style.cssText='display:none';var select = this; window.setTimeout(function(){select.style.cssText='display:inline';},1);

Если вы не используете задержку, то она не работает - удаление и извлечение элемента должны выполняться в разных областях.

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