разные веб-файлы, созданные для разных браузеров - PullRequest
1 голос
/ 27 мая 2009

Мне только что пришло в голову, что в течение последнего десятилетия все книги по HTML / CSS всегда говорили о несовместимости браузеров и о том, как обойти эту проблему, добавляя больше «хаков» в CSS, JS или HTML. Почему они никогда не советовали, что другой способ справиться с этим (и я считаю, что лучший способ) - это добавить код (php, c и т. Д.) В первую строку html-файла, определив, какой браузер используется, затем добавить подходящие файлы CSS / JS для этого браузера?

Ответы [ 7 ]

4 голосов
/ 27 мая 2009

Раньше вы добавляли хаки в свой JavaScript, чтобы определить, какой браузер использовал клиент, и запускать код на его основе. Похоже, что не было лучшего способа сделать это, поэтому каждая книга имела свою реализацию.

Во многих старых книгах вы найдете код для определения браузера, а затем в коде вы увидите такие вещи, как:

if (NS4) {

} elseif (IE) {

}

Но в значительной степени это уже устарело.

Еще одна важная вещь, которую мы имеем сейчас, - это фреймворки, такие как JQuery, которые стремятся абстрагироваться от нескольких существующих несовместимостей, которые все еще существуют. Мне кажется, в прошлом люди просто катали свои собственные фреймворки JQuery-esq в стиле, чтобы не было единой, принятой большим сообществом.

Была выпущена одна из моих любимых цитат о строках пользовательских агентов, поставляемых с Chrome:

"И поэтому Chrome использовал WebKit, и притворился Safari и WebKit притворился ХТМЛ, а ХТМЛ притворился гекконом, и все браузеры притворились Mozilla, и Chrome называл себя Mozilla / 5.0 (Windows; U; Windows NT 5.1; ru-ru) AppleWebKit / 525.13 (KHTML, как Gecko) Chrome / 0.2.149.27 Safari / 525.13 и строка пользовательского агента была полной беспорядок и почти бесполезный, и все сделал вид, что все остальные, и путаницы было много. "

Это хорошая комедия - http://webaim.org/blog/user-agent-string-history/

2 голосов
/ 27 мая 2009

Потому что тогда вам нужно поддерживать два набора файлов css и js. На самом деле это ничем не отличается от добавления «хаков» к одному, за исключением того, что вы должны вносить изменения в два файла каждый раз, когда вносите изменения.

2 голосов
/ 27 мая 2009

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

В HTML имеются условные комментарии, которые позволят вам загружать альтернативные файлы CSS или Javascript, если вы захотите.

Справочник по условным комментариям

1 голос
/ 27 мая 2009

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

Несоответствия браузера должны быть обработаны путем тестирования возможностей. Как уже упоминали другие, есть JavaScript-фреймворки, такие как JQuery, которые обрабатывают это для вас. Что касается CSS, используйте условные комментарии для более старых версий Internet Explorer, как уже упоминалось. Старайтесь избегать использования «хаков», потому что они могут быть исправлены в более новой версии без устранения проблемы, которую вы пытались обойти.

0 голосов
/ 16 апреля 2014

Я думаю, что есть лучшее решение:

Простое решение, просто используйте эту библиотеку JS, и вы можете легко применять стили для каждой комбинации браузера / ОС:

BrowserClass.js

При этом вы получите имя класса в теге body с текущим именем и версией браузера, а также с используемой ОС.

После включения файла:

<script src="js/browserclass.js"></script>

Например, в Windows 8.1 с последней версией Chrome вы увидите:

<body class="chrome chrome34 win desktop">

И в вашем файле стиля вы можете сослаться по: (стиль .sass)

body.chrome
  #example
    color: blue

или

body.win.chrome
  #example
    color: red

Примечание:

[if IE] операторы устарели с IE10, так что это решение для этого

0 голосов
/ 27 мая 2009

Это потому, что (по большей части и даже «традиционно») хакерство CSS было / реализовано внешними разработчиками, которые не всегда имеют доступ к внутренним сценариям. Если в первые годы веб-разработкой руководили фоновые разработчики, я часто думал, что все будет по-другому.

Кстати, я вообще не думаю, что это плохой вопрос (по какой-то причине он был изначально отклонен). И, между прочим, условные комментарии для CSS и стабильная JS-инфраструктура, такая как jQuery, определенно являются подходящим вариантом.

0 голосов
/ 27 мая 2009

В продолжение сказанного Мэтью Вайнсом условные комментарии выглядят примерно так ...

<!--[if lte IE 6]><link href="LayoutIE6.css" type="text/css" rel="stylesheet" /><![endif]-->
<!--[if gte IE 7]><link href="LayoutIE7.css" type="text/css" rel="stylesheet" /><![endif]-->
<!--[if !IE]><link href="Layout.css" type="text/css" rel="stylesheet" /><![endif]-->

Надеюсь, это поможет:)

...