ориентация только на сафари с использованием JavaScript - PullRequest
0 голосов
/ 19 марта 2012

Интересно, если это вообще возможно.

найдено:

<script type="javascript">
isSafari3 = false;
if(window.devicePixelRatio) isSafari3 = true;
</script>

на http://dustinbrewer.com/css-hackgetting-safari-to-behave/. но, похоже, оно предназначено как для Chrome, так и для Safari, я предполагаю, что этобольше цели webkit.также

console.log(isSafari3);

возвращается с числом пикселей, а не с логическим значением.поэтому я не уверен, о чем говорил тот парень.

спасибо за помощь.

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Вы не можете надежно использовать существование devicePixelRatio для надежного обнаружения только Safari.Это может работать сегодня, но ничто не мешает другому браузеру реализовать это, и тогда ваш код будет полностью сломан.

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

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

Вот статья об обнаружении функций: http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting. Библиотека modernizr содержит многоФрагменты кода обнаружения функций, которые можно использовать целиком или узнать, как он обнаруживает функции и использовать только это конкретное обнаружение.

0 голосов
/ 19 марта 2012

это выражение преобразует значение window.devicePixelRatio в логическое значение:

isSafari3 = false;
if(window.devicePixelRatio) isSafari3 = true;

Возвращает true в Chrome и false в Firefox.

рассмотреть:

window.devicePixelRatio = undefined; // false, null, "", 0

if (window.devicePixelRatio){
// false
}

window.devicePixelRatio = "foo"; 

if (window.devicePixelRatio){
// true
}

Возможно, это плохая идея по причинам, указанным @ jfriend00.

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