Safari 3.0.x не поддерживает свойство document.compatMode, чтобы определить, отображается ли документ в стандартах или в режиме quirks. Safari 3.1 и новее поддерживают его. Как определить режим документа в Safari 3.0.x, если document.compatMode недоступен?Как определить режим quirks в Safari 3.0.x?
ответ
быстрый Google search приводит: "HOWTO determine the document's compatibility mode"
В основном вы создаете div
с неправильным стилем CSS, который будет работать только в режиме совместимости. Затем вы проверяете новый стиль div
, чтобы узнать, принят ли css. Если он был принят, документ находится в режиме quirks.
Перефразируя the code:
var el = document.createElement('div');
el.style.cssText = 'position:absolute;width:0;height:0;width:1';
var compatMode = el.style.width === '1px' ? 'BackCompat' : 'CSS1Compat';
Я бы проверить это для вас, но я не могу запустить Safari. Пожалуйста, проверьте его, если можете, и сообщите результаты в комментарии.
У большинства новых браузеров есть compatMode
, но в некоторых старых браузерах нет. Такие браузеры включают Mac IE и более старые WebKits, такие как Safari 2 на рабочем столе и многие телефоны Nokia.
Если document.compatMode
существует, тогда проверьте, что это значение не "BackCompat"
. Если это так, документ находится в стандартном режиме. Это дает ранний результат для IE.
В противном случае нет document.compatMode
, и поэтому это более старый браузер, который может поддерживать рендеринг режима стандартов, но просто не имеет свойства compatMode
.
Если для элемента, имеющего числовое значение для width
, устанавливается его ширина, документ не находится в стандартном режиме.
Вы можете использовать if - else
, если найдете более читаемым; или, альтернативно, использовать тройное назначение.
/* 2010-06-26 Garrett Smith - BSD License */ function isQuirksMode(doc) { doc = doc || document; var compatMode = doc.compatMode, testStyle, IS_STANDARDS_MODE = compatMode ? compatMode != "BackCompat" : doc.createElement && ((testStyle = doc.createElement("p").style).width = "1", !testStyle.width); return !IS_STANDARDS_MODE; }
Это относится к более старым версиям Webkit, которые могут существовать на мобильных устройствах, таких как Nokias в странах по всему миру.
Он вернется в IE5.5 и ниже. Проверка вывода на существование для createElement
не удастся в любом браузере, у которого есть элемент createElement, который сломан (я полагаю, Opera 5).
Избегайте использования этой функции для выполнения общих выводов; всегда старайтесь быть как можно более конкретными.
- 1. - режим quirks?
- 2. Quirks режим рендеринга проблема
- 3. Режим IE8 и quirks
- 4. Как установить режим Документы Quirks в asp.net
- 5. Откройте режим Quirks в IE
- 6. Режим MVC Razor quirks - umbraco
- 7. Режим Quirks Force с Doctype
- 8. Режим Quirks выбран по умолчанию
- 9. Почему я запускаю режим quirks в IE8?
- 10. Заставить IE10 использовать обычный режим Quirks (не режим IE5/Legacy Quirks)
- 11. Что такое режим Quirks в IE? Когда и почему мы используем режим Quirks в Internet Explorer?
- 12. Ширина элемента, учитывающего режим quirks в javascript?
- 13. В IE9 Режим Quirks Date.parse возвращает NaN
- 14. Какой режим отображает iframe внутри Sharepoint 2007 (так, режим quirks)?
- 15. IE9 Режим Quirks - заявление Doctype закомментировано
- 16. Режим адаптивного режима Safari
- 17. Как определить, включен ли режим экономии энергии Safari?
- 18. Режим Quirks и совместимость с DOCTYPE
- 19. Режим IE и quirks с виджетами
- 20. Почему XHTML 1.1 doctype запускает режим quirks?
- 21. HTML Doctype Настройка/IE Режим Quirks
- 22. IE 7/Режим Quirks и цвет фона?
- 23. jqGrid + Internet Explorer 5 Режим Quirks
- 24. Как узнать, был ли запущен режим Quirks в IE6?
- 25. Как программно отключить режим quirks в элементе управления IE8 WebBrowser?
- 26. Python 3.0+ Расчетный режим
- 27. Tagcanvas с наложением colorbox бросает IE9 в режим quirks?
- 28. Полноэкранный режим в iOS7 Safari
- 29. IE 10 -ms-clear-псевдо-элемент и режим IE5 quirks
- 30. Как определить режим STAMINA?
Он отлично работает в Safari 3.0.x –
Нет, ничего. Этот код выводит «BackCompat» в IE, когда IE находится в стандартном режиме. – Garrett
В статье Google используется обнаружение браузеров и расширений - очевидно, ничего хорошего. – Garrett