Обнаруживается ли касание в устройстве касания с событием щелчка на всех устройствах? - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть некоторый код jquery, который выглядит примерно так:

$(this).click(function() {
    //code
});

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

Я подумал, может быть, это потому, что все сенсорные устройства рассматривают сенсорные события как события щелчка, поэтому я прибегнул к гуглу, и оказалось, что мое предположение было неверным, потому что касание - это отдельное событиев JavaScriptЕсть ontouchstart и ontouchend , но они не поддерживаются в некоторых браузерах. Хотя я все еще нашел такой код:

$(this).on("click touchstart",function() {
    //code
});

Так почему же он работал с симуляцией касания? Это работает только в некоторых сенсорных устройствах? И какое может быть мое окончательное уверенное решение, позволяющее моему коду работать на всех устройствах одним нажатием и касанием, независимо от того, какой браузер?

1 Ответ

1 голос
/ 04 ноября 2019

С помощью этой функции вы можете отдельно определять события click и touchstart.

var clickEvent = (function() {
  if ('ontouchstart' in document.documentElement === true)
    return 'touchstart';
  else
    return 'click';
})();

$(this).on(clickEvent,function() {
    //code
});
...