2016-03-17 2 views
0

В PHP-файле, который выводит форму HTML, мне интересно, могу ли я использовать новые теги HTML5, например тип ввода электронной почты. Будут старые браузеры показывают некоторую ошибку или я должен как-то различать с PHP, через USER_AGENT, например, и сделать:Как правильно использовать новые теги HTML5 для совместимости со старыми браузерами

<input type="text" /> 

вместо

<input type="email" /> 

в старых браузерах (кстати, тот же вопрос, будет применяться к DOCTYPE сам, я думаю). Что является наиболее подходящим в соответствии со спецификациями?

+2

Возможный дубликат этого: http://stackoverflow.com/questions/18223540/which-html5-tags-can-i-use-without-worrying-about-browser-compatibility –

+2

Входные типы неизвестного типа в старые браузеры всегда отображаются как text = text. Но вам, вероятно, лучше спросить себя, действительно ли это стоит усилий. Все текущие браузеры по существу поддерживают HTML5, который уже давно существует, и браузеры, которые его не поддерживают, вероятно, слишком рискованны, чтобы продолжать использовать их в любом случае. Я бы просто принял новый стандарт, обслуживающий старые браузеры, только поощряет пользователей не обновлять. – GordonM

ответ

1

К счастью для нас, обходной путь существует, что позволяет старые браузеры признать эти новые элементы, что позволяет им быть стилизовано , и таким образом давая нам полное использование этих новых семантических тегов. Это инструмент под названием HTML5Shiv. Как указано на связанной странице Google, «shiv» и «shim» являются взаимозаменяемыми терминами в этом контексте. Но как мы перешли из IE, даже не признав существование этого элемента, а теперь его можно использовать? Фокус в том, что вызов document.createElement ("section") внезапно заставит IE распознать элемент раздела. Никто не знает, почему, но он работает, и вам даже не нужно использовать узел, возвращаемый этой функцией. Но вам нужно обязательно позвонить ему на раннем этапе на своем веб-сайте, прежде чем использовать какой-либо из этих элементов, иначе это не сработает. Вам нужно будет назвать это для каждых новых элементов HTML5, как следующий код:

"abbr article aside audio bdi canvas data datalist details figcaption figure "+ "footer header hgroup main mark meter nav output progress section " + "summary template time video" .replace(/w+/g, function(a){ document.createElement(a) });

Обратите внимание, что мы используем метод объекта строки заменить лаконично перебрать каждую непрерывную длину совпавших символов посредством регулярного выражения и выполнения функции обратного вызова для каждого символьного блока, который в свою очередь вызывает createElement. Здесь, здесь, мы будем называть этот метод «обрезкой документа», чтобы документ мог визуализировать новые элементы HTML5.

И его лучше использовать более новые версии браузеров, если вы не повторите что-то со старыми браузерами! : D

Спасибо вам!

1

В случае, если есть библиотека, которая может помочь вам использовать «новый тег» на старых браузерах HTML5 Shiv

+0

Выполнение чего-либо большего, чем включение HTML5 Shiv (и, возможно, https://github.com/scottjehl/Respond) в 2016 году, напрасно тратит время на то, что затрагивает менее 5% пользователей. Если вы потратите время на 5%, другие 95% не получат функций, которые будут держать их достаточно быстро. – apokryfos

+0

@apokryfos - Это действительно зависит от того, кто будет использовать веб-сайт. –

+0

Даже в самых популярных случаях использования HTML5Shiv и Respond должно быть достаточно. Однако, если это действительно такой случай ниши, не используйте HTML 5 вообще. – apokryfos

Смежные вопросы