Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Масштабирование страницы в браузерах (https://javascript.ru/forum/events/8158-masshtabirovanie-stranicy-v-brauzerakh.html)

ZoNT 12.03.2010 16:28

У меня нет желания помогать людям, которые не могут пару предложений написать по-русски.

subzey 13.03.2010 01:05

ZoNT,
этот сайт, кстати, доступен также по адресу http://javascript.com.ua/. Вы и у украинцев будете русский язык спрашивать? :)

Kolyaj 13.03.2010 08:45

Цитата:

Сообщение от subzey
этот сайт, кстати, доступен также по адресу http://javascript.com.ua/. Вы и у украинцев будете русский язык спрашивать?

Ну так нужно сделать украинский раздел. Лично мне неохота терять время, открывая темы, в которых все равно не понятно, что написано.

И да, сравнивать украинский язык с безграмотностью как-то неправильно.

subzey 13.03.2010 12:51

Kolyaj,
я и не сравниваю. Просто если для русского русский язык является родным, то для украинца или беларуса — совсем необязательно. Стóит ли так придираться? Или каждому, кто не уверен в знаниях русского, добавлять в  начале поста «WARNING! This text may contain errors!», дабы не быть обплеванным местными граммар-наци?

Kolyaj 13.03.2010 14:51

Ну по крайней мере, если человек скажет, что русский язык для него не родной, отношение будет более спокойное. Имеются в виду все-таки русские "грамотеи".

http://ilyabirman.ru/meanwhile/2009/01/30/1
Цитата:

Писать безграмотно — значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе.
Я, например, даже не читаю неграмотные сообщения (равно как и неоформленный код), потому что за то время, пока я буду разбирать, что в них написано, я могу ответить на несколько нормально написанных вопроса.

hoochie 23.02.2012 19:17

с помощью jQuery:
$(window).resize(function(){
//здесь обработчик
})

svtux 31.12.2012 23:18

Попробуем найти решение
 
Метод 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 );


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

dmitriymar 01.01.2013 00:26

Цитата:

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

может не нужно предположений и реанимаций некропостов? всётаки есть стандартное событие window.onresize -работающее во всех браузерах

svtux 01.01.2013 15:39

Тема раскрыта.
 
Тема не раскрыта и требует своего логического завершения!
Поэтому добавлю еще два момента:

1) Чтобы не дублировать просто дам ссылку на развёрнутое изучение данного вопроса на стэке: ссылка
Из которого следует, что мы не сможем узнать текущее значение масштаба для старых версий браузеров, но можем это сделать во всех современных, впрочем в некоторых пока только через определённые хаки.

2) Метод jQuery, конечно же, работает в Mozilla, так как использует стандартные события, но имеет свои особенности, например, у меня в проекте на mousewheel было назначено своё действие масштабирования (но без нажатия на ctrl), в связи с чем принятое по умолчанию в браузере действие ctrl+mousewheel у меня попросту не срабатывало, а выполнялось только то действие, которое я назначил (при нажатии ctrl+"+/-" конечно же всё отлавливалось).

dmitriymar 01.01.2013 16:46

Цитата:

Сообщение от svtux
mousewheel было назначено своё действие масштабирования (но без нажатия на ctrl), в связи с чем принятое по умолчанию в браузере действие ctrl+mousewheel у меня попросту не срабатывало, а выполнялось только то действие, которое я назначил (при нажатии ctrl+"+/-" конечно же всё отлавливалось).

ну да если в зависимости от ситуации, не отменить/ отменить действия по умолчанию браузера , не задумываясь о правильном алгоритме....
зажатие контрола нужно было ещё проверять и счастье было бы

не нужно "раскрывать тему" -лучше займитесь изучением основ и "раскрывать тему" не понадобиться...


Часовой пояс GMT +3, время: 02:35.