во-первых, я знаю, что есть несколько способов обойти это, например, создание ontouchstart
и onclick
то же самое. Но есть ли способ проверить, есть ли у пользователей смартфон/планшет/устройство с сенсорным экраном по сравнению с ноутбуком или компьютером, и изменить функцию ontouchstart
на click
? Вот пример одного из способов решения:
var touchScreen = false;
var touches = 0;
var clicks = 0;
document.addEventListener("touchstart", function() {
touchScreen = true;
function touch() {
touches++;
console.log(touches);
console.log(clicks);
document.getElementById("clicks").innerHTML = "touches = " + touches + ", clicks = " + clicks;
}
touch();
});
function click() {
if (touchScreen === false) {
document.addEventListener("click", function(event) {
clicks++;
console.log(touches);
console.log(clicks);
document.getElementById("clicks").innerHTML = "touches = " + touches + ", clicks = " + clicks;
});
}
}
click();
html {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
<h1><span id="clicks"></span></h1>
Этот фрагмент кода показывает, что я «определил», является ли это устройством с сенсорным экраном или нет, и выполнил что-то на основе этой информации. (К вашему сведению, когда вы запускаете фрагмент кода, обязательно нажмите / коснитесь пустого места, чтобы получить вывод)
Однако я не хочу этого делать, потому что у меня много функций, которые полагаются на такие вещи, как <button onclick="click()">click</button>
. Я хотел бы найти простой способ просто изменить часть onclick
на ontouchstart
, если это устройство с сенсорным экраном. Я использую JavaScript только для написания сценариев, спасибо!
Кроме того, если вы считаете, что нет способа сделать это, будет ли лучший способ проверить и выполнить код (с помощью щелчка или касания) в зависимости от того, есть ли у пользователя сенсорный экран или другое устройство?
редактировать:
Обычно я просто нажимаю, но некоторые элементы на странице, вероятно, будут нажиматься с высокой скоростью или, по крайней мере, быстрее, чем 300 мс.
onclick
должны работать независимо. Возможно, вам нужен fastclick для безопасного устранения задержки в 300 мс. - person caseyWebb   schedule 10.12.2017