При зависании на iPad / iPhone пользователь дважды щелкает ссылку

Это то, что я недавно встретил. Исходная ситуация на шрифтах, которые я использовал по какой-то причине, не выстраивалась в линию, поэтому я выровнялся по низу и увеличивал высоту линии вместо добавления отступов.

Вот как я решил свою проблему, если у вас есть ссылка на ручку кода, я могу проверить, будет ли она работать для вас, или если другое решение будет лучше.

p {

    vertical-align: text-bottom;
    line-height: 1.5;

}
120
задан Francesco 14 June 2010 в 16:21
поделиться

6 ответов

Не тестировал это полностью, но, поскольку iOS запускает события касания, это может сработать, если вы находитесь в настройке jQuery.

$('a').on('click touchend', function(e) {
    var el = $(this);
    var link = el.attr('href');
    window.location = link;
});

Идея состоит в том, что Mobile WebKit запускает событие touchend в конце нажатия, поэтому мы его отслеживаем, а затем перенаправляем браузер, как только запускается событие touchend . по ссылке.

201
ответ дан 24 November 2019 в 01:30
поделиться

Постарайтесь не изменяться стиля "дисплея" в событии CSS при наведении курсора. У меня был "дисплей: блок" в состоянии при наведении курсора. После удаления iOS пошел на Линс единственным касанием. По тому, как кажется, что последние обновления IOS зафиксировали эту "функцию"

0
ответ дан 24 November 2019 в 01:30
поделиться

Вы можете проверить navigator.userAgent следующим образом:

if(!navigator.userAgent.match(/iPhone/i) || !navigator.userAgent.match(/iPad/i)) {
    //bind your mouseovers...
}

но вы бы нужно проверить ежевики, дроидов, другие устройства с сенсорным экраном. Вы также можете привязать наведение указателя мыши только в том случае, если userAgent содержит Mozilla, IE, Webkit или Opera, но вам все равно нужно проверять некоторые устройства, потому что Droid, например, сообщает свою строку userAgent как:

Mozilla/5.0 (Linux; U; Android 2.0.1; en-us; Droid Build/ESD56) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17

Строка iPhone аналогична . Если вы просто просматриваете iPhone, iPod, iPad, Android и Blackberry, вы можете получить большинство карманных компьютеров, но не все из них.

-1
ответ дан 24 November 2019 в 01:30
поделиться

У меня была такая же проблема, но не на сенсорном устройстве. Событие запускается каждый раз при нажатии. Есть кое-что о очереди событий или около того.

Однако мое решение было таким: При нажатии (или касании?) Вы устанавливаете таймер. Если ссылка будет нажата еще раз в течение X мс, вы просто вернете false.

Чтобы установить таймер для каждого элемента, вы можете использовать $. Data () .

Это также может решить проблему @Ferdy, описанную выше.

0
ответ дан 24 November 2019 в 01:30
поделиться

Я думаю, что было бы разумно попробовать mouseenter вместо mouseover. Это то, что используется внутри при связывании с .hover(fn,fn) и, как правило, то, что вы хотите.

2
ответ дан 24 November 2019 в 01:30
поделиться

Я «думаю», что в ваших ссылках нет события onmouseover, где 1 нажатие активирует onmouseover, а двойное нажатие активирует ссылку. но идк. У меня нет iPad. Я думаю, вам нужно использовать события жестов / касаний.

https://developer.apple.com/documentation/webkitjs

1
ответ дан 24 November 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: