Как обнаружить инвертированный цветной режим MAC OS в javascript / css?
Я хочу сделать дополнительную контрастную работу, если ОС находится в режиме высокой контрастности. С Windows мы можем использовать медиа-запросы, такие как
@media screen and (-ms-high-contrast: active) {}
который обнаружил бы это через медиа-запрос, и мы можем расширить функциональность оттуда. Если у нас нет такого медиа-запроса в Mac OS - возможно, есть альтернатива JS? Или это инвертирует цвета на таком низком уровне, что мы вообще не можем на это смотреть?
2 ответа
Нет, это невозможно.
Это ответ, основанный на мнении и косвенных доказательствах:
Режим инвертирования цветов не работает как режим высокой контрастности Windows. Он не меняет содержимое (например, удаляет фоновые изображения на странице), поэтому его предоставление через медиа-запрос не дает никаких преимуществ конечному пользователю, а вместо этого открывает путь для злоупотреблений.
Функция в Objective C, чтобы определить, активен ли режим доступности (булево
AXAPIEnabled(void);
) устарел по состоянию на 10.9 без указания на то, что есть замена. Вы можете увидеть это на сайте Apple Developer. Более того, если разработчики на этом уровне системы больше не имеют доступа, я ожидаю, что веб-разработчики также будут ограничены (точно так же, как авторы AppleScript, похоже, не имеют доступа).В целом, тестирование на наличие вспомогательных технологий или активацию вспомогательных функций не одобряется пользователями, которые больше всего в этом нуждаются. Это создает реальный риск того, что разработчики с благими намерениями нарушат эти функции (возможно, отключив страницу), а также позволят плохим актерам определять чью-либо личную медицинскую информацию.
Я не могу найти документацию от Apple, в которой говорится, как это сделать или даже признается, что есть способ сделать это. Я также спрашивал вокруг сообщества доступности, и большинство думает, что это не существует (и было бы плохой идеей).
Был план для
inverted-colors
Медиа-запрос в CSS 4, но вы увидите, что он не в последней версии ( 6.4 сейчасcolor-gamut
). Он был отброшен, по-видимому, в пользу легкого уровня MQ, в то время как определенные для доступности MQ определены.
Я надеюсь, что кто-то может дать вам более четкий ответ. Я предлагаю вам поискать в Twitter людей Apple Dev Rel и направить их сюда (при условии, что вы не являетесь участником Программы разработчиков Apple, хотя я подозреваю, что вы спросили бы там).
Вы можете сделать это в техническом обзоре Safari прямо сейчас:
@media (inverted-colors) {
img.cancel-inversion {
filter: invert(1);
}
}
Вы должны использовать это на:
- фотографии
- Изображения значков.icns-ish (такие вещи, как значки приложений в порядке)
Вы не должны использовать это на:
- изображения текста (я имею в виду, вы не должны использовать изображения текста, но если вам нужно по какой-то причине... не используйте эту технику на этих изображениях)
- декоративные изображения
- монохромные символы (похожие на иконки шрифтов)
в то время как мы находимся на этой теме, уменьшите движение медиа-запроса, и сейчас в техническом обзоре сафари.
Как определить инвертированный цветовой режим MAC OS в JavaScript / CSS?
Ответ JavaScript / Машинопись включает в себя программно тестирования@media (inverted-colors)
запрос, опубликованный @gregwario. Следующая функция возвращает логическое значение.
isUsingMacInvertedColors: () => {
const mediaQueryList = window.matchMedia('(inverted-colors: inverted)');
return mediaQueryList.matches;
}