События hover и click на смартфонах.

12
Kaavain
На сайте с 28.07.2015
Offline
159
321

Всем привет. Возможно, кто-то озадачивался сабжем и знает ответ. Это сэкономит мне кучу времени на пересмотр стековерфлоу...

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

Но есть у меня ссылки (на них всплывают картинки от товаров, что по ссылке). Опять же - на компе нет вопросов, там ховер - это ховер, а клик - это клик.

Но вот на смарте... Там явно есть ховер при коротком тапе на элемент. Отлично все всплывает и плавает как оно в проруби. Но при повторном тапе - происходит клик. Все вроде тоже логично и удобно, но!!! При втором тапе даже на ДРУГОМ элементе. Я сначала думал что просто тап должен быть сверхкороткий и я просто не всегда в это время влезаю. Но потом заметил что четко - на странице первый тап - открывает окошко, а второй тап НА ДРУГОМ элементе - открывает картинку и сразу переходит по ссылке...

Причем дальше - ТРЕТИЙ тап опять ховер. То есть тап - открылась картинка, тап на пустом месте - закрылась картинка, тап на любо элеиенте - открылась картинка. А если средний тап пропустить - то последний будет с переходом.

ЧЯДНТ? Или это баг такой? Сейчас прямо пробовал на iOS Safariб андроида нет под рукой. Скрипт не совсем мой, но я его сильно допилил (ну там чтобы окно само понимало куда встать, например) может поломал чё:

$(function(){
  $("[data-tooltip]").mousemove(function (eventObject) {
    $data_tooltip = $(this).attr("data-tooltip");
    var winWidth = document.getElementById('tooltip').offsetWidth ? document.getElementById('tooltip').offsetWidth : 300;
    var posX = (document.body.clientWidth - eventObject.pageX) < winWidth ? document.body.clientWidth - winWidth : eventObject.pageX + 5;
    var winHeight = document.getElementById('tooltip').offsetHeight;
    var posY = (document.documentElement.clientHeight - eventObject.clientY) < winHeight ? eventObject.clientY < winHeight ? posY = eventObject.pageY - winHeight / 2 : eventObject.pageY - winHeight : eventObject.pageY + 5;
    $("#tooltip").html($data_tooltip)
    .css({
      "top" : posY,
      "left" : posX
    })
    .show();
  }).mouseout(function () {
    $("#tooltip").hide()
    .html("")
    .css({
      "top" : 0,
      "left" : 0
    });
  });
});


Могу порекомендовать только хостинг: https://traf.at/vps - за 3 года все на 4++ и цены не подняли. Ну и банк для белых ИП: https://traf.at/bankm
W1
На сайте с 22.01.2021
Offline
306
#1
Это не в этом куске скрипта.
Мой форум - https://webinfo.guru –Там я всегда на связи
Kaavain
На сайте с 28.07.2015
Offline
159
#2
webinfo #:
Это не в этом куске скрипта.

Скрип весь. Остальное - лишь целевой div

Kaavain
На сайте с 28.07.2015
Offline
159
#3
Проверил на андроиде. Там нет первого клика типа ховер. Только с переходом. 
lutskboy
На сайте с 22.11.2013
Offline
181
#4

для моб же touchmove и touchout

надо поправить типа $('[data-tooltip]').on(' touchmove mousemove', func .....

W1
На сайте с 22.01.2021
Offline
306
#5
А я вообще не использовал бы mousemove. Без надобности оно здесь.
Kaavain
На сайте с 28.07.2015
Offline
159
#6
webinfo #:
А я вообще не использовал бы mousemove. Без надобности оно здесь.
lutskboy #:

для моб же touchmove и touchout

надо поправить типа $('[data-tooltip]').on(' touchmove mousemove', func .....

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

W1
На сайте с 22.01.2021
Offline
306
#7
Kaavain #:
окошко ездит за мышой

Как по мне, так удобнее, чтобы окошко было на своём месте и никуда не ездило. Но это дело вкуса и конкретного дизайна. Но событие ресурсозатратное.

Kaavain
На сайте с 28.07.2015
Offline
159
#8
webinfo #:

Как по мне, так удобнее, чтобы окошко было на своём месте и никуда не ездило. Но это дело вкуса и конкретного дизайна. Но событие ресурсозатратное.

Что, все так вот плохо? Современный юзер с минимум 2 гб оперативки и 1.3ггц процом не тянет ездящий квадратик 300х600 пикселей?

Kaavain
На сайте с 28.07.2015
Offline
159
#9
webinfo #:
окошко было на своём месте и никуда не ездило

и тут есть свое соображение... Открывшееся окошко может закрыть нужную юзеру информацию. А тут мышкой подвинул - окошко отъехало. 

W1
На сайте с 22.01.2021
Offline
306
#10
Kaavain #:

Что, все так вот плохо? Современный юзер с минимум 2 гб оперативки и 1.3ггц процом не тянет ездящий квадратик 300х600 пикселей?

Там процент, здесь процент - а в сумме тормоза. Зачем, если нет нужды?

Kaavain #:

и тут есть свое соображение... Открывшееся окошко может закрыть нужную юзеру информацию. А тут мышкой подвинул - окошко отъехало. 

Ну я особо с этим не спорю, поэтому и написал:  дело вкуса и конкретного дизайна. Хотя, конечно, либо на окошко смотришь, либо на другую информацию. Мешает окошко - убрал мышку и пропало окошко. То есть либо оно есть, либо его нет, и нечего ему ездить туда-сюда.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий