Показать сообщение отдельно
  #17 (permalink)  
Старый 31.12.2012, 23:18
Новичок на форуме
Отправить личное сообщение для svtux Посмотреть профиль Найти все сообщения от svtux
 
Регистрация: 07.12.2012
Сообщений: 3

Попробуем найти решение
Метод jQuery, видимо, побочно отлавливает это событие из-за изменений размеров окна (описание ниже по тексту) в браузерах Google Chrome и Opera (в Mozilla, например, это не работает), и, кстати, это никак не помогает отследить уже установленные параметры зума браузера.

Тем не менее, мне показалось, что это возможно в последних версиях таких популярных браузеров как:
Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:17.0) Gecko/20100101 Firefox/17.0
Opera/9.80 (X11; Linux i686) Presto/2.12.388 Version/12.12
Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
(работу под IE9+ равно как и вообще в ОС MS Windows и Apple MacOS не проверял еще).
На чистоту метода не претендую, опишу только своё видение решения.

Итак, на сегодняшний день я заметил два способа изменения масштаба отображаемой страницы в браузерах:
1) Google Chrome и Opera - движёк браузера фиктивно изменяет размеры окна, но оставляет прежними его внешние размеры, соответственно, узнать об этом мы можем сравнив два парных свойства объекта window: innerWidth/innerHeight и outerWidth/outerHeight;
2) Mozilla - движёк браузера фиктивно изменяет размер окна браузера, и пропорционально изменяет размер экрана пользователя, соответственно, узнать об этом мы можем сравнив два парных свойства объекта window: innerWidth/innerHeight и screen.width/height. (Это совсем просто заметить на странице http://internet.yandex.ru судя по данным которой IE8 ведет себя так же, как Mozilla.)
Экспериментируем, например, так:
var wIn = window.innerWidth,
hIn = window.innerHeight,
wOut = window.outerWidth,
hOut = window.outerHeight,
wScr = window.screen.width,
hScr = window.screen.height;
var wB = document.body.offsetWidth;
var output = "inner: " + wIn + " - " + hIn + "\n"
+ "outer: " + wOut + " - " + hOut + "\n"
+ "screen: " + wScr + " - " + hScr + "\n\n"
+ "body: " + wB + "\n\n"
+ "соотношения сторон:" + "\n" + "in - " + (wIn/hIn) + "\n"
+ "out - " + (wOut/hOut) + "\n"
+ "scr - " + (wScr/hScr) ;
alert ( output );


Только пока не смог придумать (или понять), как же тогда узнать реальное разрешение экрана у пользователя для браузеров, которые его якобы изменяют в угоду своей функциональности?
Ответить с цитированием