Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двойной щелчок мыши 
:(
    Опции темы
kuksha
Дата 9.1.2012, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Обнаружил такую странность:
http://info-7.ru/Astro/nebo_segodnya_geo5.php?zero=1
если сделать двойной щелчок по этой карте, то при перетаскивании карты мышью, вместо курсора мыши появляется знак в виде перечёркнутого кружка и перетаскивание карты не срабатывает до тех пор, пока не щёлкнешь по карте ещё раз.
Причём это у меня так только в Google Chrome, а в Opera и FireFox это не наблюдается.
Думал что это из-за двойного щелчка и поставил вроде как пустышку:
Код

    canv.ondblClick = function(event) {
    event = event || window.event;
    }

Не помогло - судя по отладке это вообще не отрабатывает. Тем более, что при двойном щелчке по кнопкам "+" и "-" вверху слева карты распознаются два раза "увеличить" и два раза "уменьшить" соответственно - то есть как обычные нажатия.
При неторопливом нажатии на эти кнопки или просто по карте ничего крамольного не происходит.
Если кто смотреть будет - обработка мыши в самом конце JS файла, но могу и тут продублировать:
Код

Canva.init = function(id)
{

    //Scroll
    //Mozilla
    if(window.addEventListener)
        document.getElementById(id).addEventListener('DOMMouseScroll', moveObject, false);
 
    //IE/OPERA etc
    document.getElementById(id).onmousewheel = moveObject;

    var canv = document.getElementById(id);

    canv.ondblClick = function(event) {
    event = event || window.event;
    }

    canv.onmousedown = function(event) {
      event = event || window.event;
      X0=event.pageX;
      Y0=event.pageY;
    //Для InternetExplorer
      if (event.pageX == null && event.clientX != null ) {
         var html = document.documentElement;
         var body = document.body;
         X0 = event.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
         Y0 = event.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
      }
    }

    canv.onmousemove = function(event) {
    event = event || window.event;
      Xi=event.pageX;
      Yi=event.pageY;
    //Для InternetExplorer
      if (event.pageX == null && event.clientX != null ) {
         var html = document.documentElement;
         var body = document.body;
         Xi = event.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
         Yi = event.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
      }
    }

     canv.onmouseup = function(event) 
    {
        if ( (Xi-290 > 2) && (Yi-85 > 2) && (Xi-290 < 21) && (Yi-85 < 21) )//кнопка +
        {
         document.NASTROYKI.krat.value = document.NASTROYKI.krat.value*1.5;
         Draw_map(0);
        }
        else if ( (Xi-290 > 2) && (Yi-85 > 25) && (Xi-290 < 21) && (Yi-85 < 44) )//кнопка -
        {
         document.NASTROYKI.krat.value = document.NASTROYKI.krat.value/1.5;
         Draw_map(0);
        }
        else // перетаскиваем карту при отпускании мыши
        {
         var CentrXold = document.NASTROYKI.CentrX.value;
         var CentrYold = document.NASTROYKI.CentrY.value;
         var krat = document.NASTROYKI.krat.value;
         document.NASTROYKI.CentrX.value=parseInt(CentrXold)+Xi-X0;
         document.NASTROYKI.CentrY.value=parseInt(CentrYold)+Yi-Y0;
         Draw_map(0);
        }

    }
}

PM MAIL   Вверх
$дмитрий
Дата 9.1.2012, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Лечится просто - переводом фокуса
PM MAIL   Вверх
kuksha
Дата 9.1.2012, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Не понял. Фокус откуда куда? И в каком месте кода?

Это сообщение отредактировал(а) kuksha - 9.1.2012, 16:57
PM MAIL   Вверх
$дмитрий
Дата 9.1.2012, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Цитата

Не понял

Нажми 2 раза на карту, а затем выдели любой текст на странице, а затем пробуй перетащить карту. Эффект пропадает!
Это чтоб понял о чем речь

Добавлено через 3 минуты и 21 секунду
Фокусируй на любом доступном элементе. Или же вообще запрети выделение текста при движении мыши над картой

Код

    canv.ondblClick = function(event) {
    event = event || window.event;
    }

К чему этот код? Так наугад?

Попробуй так
Код

    canv.ondblClick = function(event) {
        return false;
    }

PM MAIL   Вверх
kuksha
Дата 9.1.2012, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



О, прикольно smile попробую с фокусом повозиться. 
Конечно, хотелось бы  понять в чём дело и первопричину устранить, но если не выйдет - пусть уж так будет, чем никак smile

Добавлено через 6 минут и 26 секунд
Это я второпях пытался двойной клик отменить. 

return false; - тоже не помогло, а то что  там до этого было - да мусор просто, он не делал ничего.
PM MAIL   Вверх
$дмитрий
Дата 9.1.2012, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Цитата

Конечно, хотелось бы  понять в чём дело и первопричину устранить

Видимо браузер пытается выделить весь элемент, симптомы говорят об этом
PM MAIL   Вверх
ksnk
Дата 9.1.2012, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Каждый раз при двойном клике мышкой срабатывает http://mc.yandex.ru/clmap/10004845?rn=3765...%5D1b%5C%5B1Si*
Это так запланировано?
Это и есть корень бед с двойным кликом.
Достаточно быстро покликать много раз по карте и скрипт работает неадекватно, запрещая перетаскивать карту.

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


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
kuksha
Дата 9.1.2012, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Цитата(ksnk @  9.1.2012,  17:20 Найти цитируемый пост)
Каждый раз при двойном клике мышкой срабатывает http://mc.yandex.ru/clmap/10004845?rn=3765...%5D1b%5C%5B1Si*
Это так запланировано?

Конечно нет! 
Всё что в голову пришло - счётчик яндекса, он в числе прочего отслеживает места щелчков на странице. Убрал его, но лучше не стало. 

ЗЫ:
Не по теме - карту отображать при перетаскивании конечно же нагляднее, но скоро я увеличу кол-во звёзд с 9000 до нескольких сот тысяч и тогда наверное не до красивостей будет при данном способе прорисовки smile 
Хотя кто его знает, может и ничего... нет сейчас пока не до жиру, честно говоря - недоделок пока куча.

Добавлено через 2 минуты и 26 секунд
Цитата($дмитрий @ 9.1.2012,  17:19)
Цитата

Видимо браузер пытается выделить весь элемент, симптомы говорят об этом

да, спасибо, я как-то сталкивался, надо ещё раз посмотреть.

Насчёт выделения браузером элемента - да, спасибо, я как-то сталкивался, надо ещё раз посмотреть.
PM MAIL   Вверх
Amphiluke
Дата 9.1.2012, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



<offtop>
Цитата(kuksha @  9.1.2012,  20:32 Найти цитируемый пост)
Код

    canv.ondblClick = function(event) {
    event = event || window.event;
    }

Язык JavaScript является регистрозависимым. Нет такого свойства — ondblClick. За обработчик события "dblclick" отвечает свойство ondblclick.
</offtop>

Это сообщение отредактировал(а) Amphiluke - 9.1.2012, 18:08
PM   Вверх
kuksha
Дата 9.1.2012, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



ondblclick - исправил. 
Вставил alert для проверки - не отрабатывает.
PM MAIL   Вверх
Amphiluke
Дата 9.1.2012, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Пройдитесь поиском по скрипту, поищите слово «ondblclick». Нету. Оно у вас как-то не так набрано, что-ли. smile

Добавлено через 5 минут и 16 секунд
Одна из букв «c» — кириллицей.
PM   Вверх
kuksha
Дата 9.1.2012, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Опс.. виноват. Опечатка. Теперь есть. Отрабатывает. 
alert уже убрал. 
Жаль что не помогает основному вопросу...
PM MAIL   Вверх
kuksha
Дата 9.1.2012, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



Попробовал поставить вот это для переноса фокуса:
Код

    document.getElementById('pusto').focus();//фокус на другой рисунок
    document.getElementById('karta').focus();//обратно фокус на карту

ставил в разные места, не помогает...
PM MAIL   Вверх
$дмитрий
Дата 9.1.2012, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



Цитата

ставил в разные места, не помогает

Не то и не так ты делаешь
Фокус переводи на элемент ввода, к примеру поле "шир.:"
Цитата

document.getElementById('karta').focus();//обратно фокус на карту

Обратный фокус нафиг не нужен

Добавлено через 3 минуты и 34 секунды
А зачем ты подключил JQuery, раз пишешь такие конструкции?
Код

document.getElementById('pusto')


Это сообщение отредактировал(а) $дмитрий - 9.1.2012, 20:09
PM MAIL   Вверх
Amphiluke
Дата 9.1.2012, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 39
Всего: 112



Есть подозрение, что
Код

<script type="text/javascript">
    Canva.init('karta');
    var __map = document.getElementById("karta");
    if (__map.addEventListener)
     __map.addEventListener("mousedown", function(e) { e.stopPropagation(); }, false);
</script>

решает проблему.

Добавлено через 1 минуту и 20 секунд
Если непонятно, я дописал отмену всплытия события mousedown в уже имевшийся скрипт в конце документа.

Добавлено через 3 минуты и 27 секунд
Либо у меня глючит Chrome. smile
PM   Вверх
kuksha
Дата 9.1.2012, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



$дмитрий, помогло smile Попробовал повесил на двойной клик. Пока закомментировал. 
Если не удастся по-другому - оставлю так. Пусть немного некрасиво смотрится, главное что работает.  Спасибо! 


Amphiluke, поставил этот код, не сработал. Опечаток вроде нет - скопипастил... И ещё - не понял как это должно работать?

Это сообщение отредактировал(а) kuksha - 9.1.2012, 21:01
PM MAIL   Вверх
$дмитрий
Дата 9.1.2012, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 5
Всего: 45



kuksha, была у меня примерна такая задача. Создал инпут с top:-10000px, left:-10000px и переключал фокус на него, инпут сам при этом не виден и все прекрасно работает. Рекомендую сделать так же smile

Это сообщение отредактировал(а) $дмитрий - 9.1.2012, 22:12
PM MAIL   Вверх
kuksha
Дата 10.1.2012, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 15.6.2011

Репутация: нет
Всего: нет



О, а это мысль! Благодарю smile
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.