Я огляделся и не видел этого вопроса еще.
Какой надежный способ в Javascript определить тип носителя (например, экран, печать, переносчик) на странице? Я видел ссылки на document.styleSheets[0].media
, но мне не повезло используя это, либо из-за проблем с поддержкой браузера, либо из-за того, что я что-то не понимаю.
Я спрашиваю, потому что я хочу, чтобы что-то скрывалось от Javascript на экране, но не в режиме просмотра. Нельзя полагаться на связанные со средой стили, потому что я использую Prototype для запуска тумблера для элемента, а Prototype не позволяет элементу переключаться на видимый, если он был объявлен невидимым (display: none
) с не-встроенным CSS *. Я попытался просто установить встроенные стили для конкретного элемента для элемента (<div style="@media print { foo: bar; } @media screen { blargh: bfargle; }">
), но из того, что я могу сказать, это не поддерживается.
Я знаю, что я могу циклически перебирать таблицы стилей и проверять, активна ли связанная с таблицей связанная с печатью таблица стилей, но я в настоящее время в ситуации, когда различные объявления стиля в стиле мультимедиа смешиваются в одном связанная таблица стилей, так что ничего хорошего. И да, я могу просто разделить таблицы стилей на разные типы носителей, но сначала хотел бы выяснить, могу ли я просто надежно вытащить тип носителя из DOM с помощью Javascript, полностью независимо от CSS. О, и я пробовал этот трюк "скрыть элемент для вида печати, а затем проверить, видно ли это с помощью Javascript", но это всегда приводило к (когда я загружаю предварительный просмотр). Javascript не замечает, что предполагаемый- скрытые элементы видны и выполняют любые манипуляции с DOM, о которых я рассказываю, несмотря на то, что эти элементы не видны. Если кто-нибудь хочет получить более подробную информацию о том, что я здесь говорю, я могу подробно остановиться в редактировании.
* Это то, что я не понял и постоянно раздражаюсь. Любой, кто может дать какое-либо представление об этом, получает от меня большой запас.