Ответ 1
В современных версиях FireFox вы можете сделать следующее:
DPR = window.devicePixelRatio;
if ( DPR <= 0.999 || DPR >= 1.001 ){
// User has zoomed in or zoomed out
}
Я хочу определить, увеличен или увеличен браузер (не важно знать значение, но я предполагаю, что его все равно придется искать в процессе принятия решения). Я прочитал много других сообщений SO по этой теме, но ни одно из решений, данных в FF (хотя есть решение IE7/8 и хром).
О, и я не могу использовать flash, поэтому решение для вспышки не может быть и речи.
Изменить: И я должен быть в состоянии обнаружить это на начальной загрузке страницы
В современных версиях FireFox вы можете сделать следующее:
DPR = window.devicePixelRatio;
if ( DPR <= 0.999 || DPR >= 1.001 ){
// User has zoomed in or zoomed out
}
Если с помощью масштабирования вы хотите, чтобы пользователь нажал ctrl/cmd + [plus], а не css transform, вы можете обнаружить вычисленный размер шрифта. Просто зарегистрировался в FF 4.0.1/Mac, и это сработало для меня. Чтобы обнаружить вычисленный размер шрифта, я использовал код из этого вопроса: Получить вычисленный размер шрифта для элемента DOM в JS.
Значение изменилось после масштабирования. Вы должны знать, каков должен быть размер шрифта определенного элемента (как указано в css) и сравнить его с тем, чем он на самом деле является.
Предлагаю вам рассмотреть этот общий вопрос. И, возможно, закройте свой собственный как дубликат (не голосуя, чтобы сделать это сам, так как это не "точный дубль".
Вы пытались обнаружить разрешение, которое может помочь вам определить масштаб.
Возможно, вместо обнаружения масштабирования вы можете обнаружить ошибку.
Например, если ваш макет ожидает, что смещение элементов будет равным 100 200, а запрос покажет его на уровне 300 450, вы узнаете его не в том месте, и вы можете применить исправление/обходное решение.
Это имеет дополнительное преимущество: если проблема масштабирования исправлена в будущей версии браузера, вы не будете применять свое исправление без необходимости или неправильно.