2012-03-11 2 views
3

Я считаю, что это ошибка Opera, поэтому позвольте мне сначала показать вам, что случилось. Я использую шрифт шрифта @ font-face на всем веб-сайте. Он отлично работает везде. За исключением необязательной подсказки Opera, которая не имеет никакого текста, отображаемого при использовании пользовательского шрифта.Как избежать ошибок при поиске в Opera при использовании @ font-face?

Это как подсказка выглядит при использовании @ шрифт лица для всего содержимого сайта:
enter image description here

Вот как это должно выглядеть следующим образом:
enter image description here

Итак, это мое @ определение шрифта лицо:

@font-face { 
    font-family: 'OpenSans'; 
    src: url('/fonts/OpenSans-Regular-webfont.eot'); 
    src: url('/fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), 
     url('/fonts/OpenSans-Regular-webfont.woff') format('woff'), 
     url('/fonts/OpenSans-Regular-webfont.ttf') format('truetype'), 
     url('/fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

И это, как я поставил на содержание всего сайта в:

body, button, input, select, textarea { 
    color: #454545; 
    font: normal normal 12px/15px "OpenSans", "Lucida Grande", "Trebuchet MS", sans-serif; 
} 

Итак, как этого избежать? Я не хочу жертвовать пользовательским шрифтом только для этой ошибки. Я не верю, что есть селектор для всплывающей подсказки, не так ли?

+0

У меня были проблемы с подсказками в прошлом и выяснилось, что пока нет селектора для них. Надеюсь, это скоро изменится. – diggersworld

ответ

2

Я считаю, что Diggersworld правильно говорит, что это проблема Opera. Я часто работаю с Opera и использую jQuerytools (или аналогичный скрипт подсказки), чтобы обойти эту несогласованность в Opera.

Вы должны иметь возможность использовать настраиваемый html для создания всплывающей подсказки, не жертвуя выбранным шрифтом.

-1

Я столкнулся с той же ошибкой. Существует уродливая хак, если вы обслуживаете свои страницы, как * .php я добавил это в верхней части страницы:

<?php $u_agent = $_SERVER['HTTP_USER_AGENT']; $opera = false; if(preg_match('/Opera/',$u_agent)){$opera = true;}?> 

, а затем в виде (служил эхо):

echo "<input type='text' name='required_field1' title='This field is required.'";if($opera == false){echo "required";}echo" />"; 

Чем Единственное, что осталось, чтобы иметь запасной вариант для браузеров без понимания «требуется» (и опера) что-то вроде этого:

if($_POST['required_field1'] == NULL && $_POST['required_field2'] == NULL){echo "Please fill out all of the form fields.";} 

АЛЬТЕРНАТИВНОЙ Мой сервер просто служил значения по умолчанию Wh Иль с помощью get_browser() - функция, но вы можете попробовать и что-то вроде этого в качестве альтернативы вместо этого для всего этого в верхней части страницы:

$browser = get_browser(null, true); 

и чем вместо "if ($opera == false)" вы бы:

if ($browser[browser] != 'Opera') 

, который был бы немного короче, но не был проверен надлежащим образом;)

+1

Это слишком много для решения проблемы на стороне клиента. – webinista

1

Да, это известная ошибка Opera.

По большей части Opera наследует стиль шрифта от того, что применяется к элементу ввода. input{font-size:2em;}, например, также сделает сообщение об ошибке 2em. Но, как вы обнаружили, есть ошибка при использовании @ font-face.

Единственный способ обойти это - и это не очень удобно - это стиль полей формы, используя вместо этого системный шрифт.