Ну, на самом деле, есть способ узнать масштаб, но он грязный и требует четырех reflow, что не есть труъ.
function getScale(){
var ct = document.createElement("div"); // создаем див
ct.style.position = "fixed"; // задаем отображение от вьюпорта
ct.style.margin = "0px"; // на всякий случай
ct.style.width = "100%"; // ширина дива — ширина вьюпорта
var sb = document.documentElement.style.overflow; // сохраняем старое значение overflow
document.body.appendChild(ct); // вставляем в документ
document.documentElement.style.overflow = "hidden"; // это значение действует на самом деле не на <html>, а на ICB, равный по ширине вьюпорту
var zoomRatio = window.innerWidth / ct.clientWidth; // делим ширину окна на ширину вьюпорта
document.documentElement.style.overflow = sb; // возвращаем стиль на место
document.body.removeChild(ct); // удаляем див
return zoomRatio;
}
alert("Масштаб:" + Math.round(getScale() * 100) + "%");
Проверял только на Опере 10.50, но, возможно, с минимальным изменением, будет работать и в других браузерах.
Про viewport, initial containing block («ICB») и прочее можно почитать
тут.
И, последнее, прошу, не используйте это знание во зло — иногда пользователю самому виднее, как использовать фичи его браузера.