Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.12.2012, 16:23
Новичок на форуме
Отправить личное сообщение для Antik0 Посмотреть профиль Найти все сообщения от Antik0
 
Регистрация: 18.12.2012
Сообщений: 4

Как запретить масштабирование
Добрый день!

Столкнулся с такой проблемой:

Написал приложение на css3, html5 и javascript для тач-экрана под windows 7.
Мешает масштабирование с помощью тач жестов.
Пробовал отменить в IE10, Firefox, Chrome, Opera.
Ничего у меня не получается, они все равно реагируют на жест двумя пальцами уменьшение или увеличение страницы.
Искал события для того чтобы отловить эти жесты, но они то же не ловятся.

Может кто что подскажет начинающему.

Спасибо.

С уважением, Анатолий.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2012, 01:01
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

сомневаюсь что можно отловить жесты.

Зато можно отловить изменение размера страницы через resize
window.onresize = function(){
  //При изменениии масштаба/размера окна браузера
  var width = document.documentElement.clientWidth; //Ширина экрана
  var height = document.documentElement.clientHeight; //Высота экрана

  alert(width);
}


1) можно было бы попробывать изменить масштаб браузера обратно, но я хз как это сделать, если и возможно то точно не везде. resizeTo метод вроде есть, впрочем помоему это нето.


2) с другой стороны можно попробывать изменить размер самого html через scale.
http://d3pr5r64n04s3o.cloudfront.net...ml/index8.html

3) есть такая штука window.devicePixelRatio но чо с ней делать на десктопе я хз
<script>
// у меня эта сволочь всегда единицу возвращает (проба в хром)
alert( window.devicePixelRatio);
</script>


нужно экспеременитровать однако.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 19.12.2012 в 02:53.
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2012, 01:39
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Короче придумал так

демо zoom для хром и IE
<body>
    123123
</body>

<script>
document.body.style.zoom="500%";
</script>


а значит при масштабировании можно просто пересчитывать zoom для body. (рабочий пример для хром)

<body>
КУКУ
</body>

<script>
var size = [document.documentElement.clientWidth,document.documentElement.clientHeight];
window.onresize = function(){
	document.body.style.zoom=document.documentElement.clientWidth/size[0];
}

</script>


в ie ширину надо иначе получать, после допиливания должно и для ie подойти
Ну а в браузерах в которых zoom непроканает придётся для body юзать css3 transform:scale.

дальше развлекайтесь сами
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 19.12.2012 в 04:49.
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2012, 12:40
Новичок на форуме
Отправить личное сообщение для Antik0 Посмотреть профиль Найти все сообщения от Antik0
 
Регистрация: 18.12.2012
Сообщений: 4

Спасибо за совет. Но дело в том, что при тач-масштабировании событие resize не появляется. Это я проверил.
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2012, 13:54
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

у меня ноут под windows 7поддерживает мультикасание на тачпаде, когда масштабирую двумя пальцами событие срабатывает, недоумеваю почему на тачскрине этого не происходит(тачскрина под рукой нет проверить сорри ). Мне кажется что браузеру пофиг, с тачпадом работает всё на ура.

ну даже если вообще нечего не придумаешь то на самый последний случай проверяй скажем каждые 100 милисекунд не изменился ли размер экрана в таймере, и если изменился то действуй.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 19.12.2012 в 13:58.
Ответить с цитированием
  #6 (permalink)  
Старый 19.12.2012, 14:02
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от DjDiablo
сомневаюсь что можно отловить жесты.
ловить не нужно-нужно запрещать поведение по умолчанию
Ответить с цитированием
  #7 (permalink)  
Старый 19.12.2012, 14:36
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

может подскаскажешь как

если рассуждать в твоём направлении то есть библиотеки для работы с мультитач.
правда все на мобильные платформы, и перспектива их применения на win7 пока мне не ясна.
ссылка на подборку

может пытаться отменить touchmove для мультикасаний через event.preventDefault(), но я хз проверять неначем.

как комбо из двух подходов можно попробывать определение мультитач вместо onresize и масштабировать body как предлагалось в предыдущем посте.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 19.12.2012 в 16:18.
Ответить с цитированием
  #8 (permalink)  
Старый 20.12.2012, 14:39
Новичок на форуме
Отправить личное сообщение для Antik0 Посмотреть профиль Найти все сообщения от Antik0
 
Регистрация: 18.12.2012
Сообщений: 4

Спасибо, DjDiablo. Сегодня все попробую и отпишусь.
Ответить с цитированием
  #9 (permalink)  
Старый 21.12.2012, 15:20
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от DjDiablo
может подскаскажешь как
Сообщение от DjDiablo
может пытаться отменить touchmove для мультикасаний через event.preventDefault()
ты сам ответил и дальше пишешь контроллер для поведений своих жестов

Последний раз редактировалось dmitriymar, 21.12.2012 в 17:53.
Ответить с цитированием
  #10 (permalink)  
Старый 23.12.2012, 14:34
Новичок на форуме
Отправить личное сообщение для Antik0 Посмотреть профиль Найти все сообщения от Antik0
 
Регистрация: 18.12.2012
Сообщений: 4

Спасибо всем! У меня все получилось. Сегодня протестировал на больших экранах. Кратко:
1. тач-событие onresize срабатывает под IE 10. В safari и opera несрабатывает.
2. на onresize поставил - document.body.style.zoom=document.documentElement. clientHeight/1080;
1080 - высота экрана в пикселях.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Как временно запретить вызов функции? Dazar Общие вопросы Javascript 9 02.09.2012 22:52
Как использовать sprit'ы? Hekumok Общие вопросы Javascript 17 10.08.2012 11:24
Ползунок как на YouTube и условие. dailclever Элементы интерфейса 1 23.07.2012 19:51
Масштабирование браузером - как обойти? Sandr Internet Explorer 7 25.04.2009 01:44