Недавно я добавил на одну из своих страниц функцию сопоставления js touch (найденную где-то здесь, в stackoverflow), чтобы я мог заставить свои перетаскиваемые объекты Jquery работать в iOS Safari (перетаскивание не будет работать без этого сопоставления, так как насколько я видел)
Это функция:
function touchHandler(event)
{
var touches = event.changedTouches,
first = touches[0],
type = "";
switch(event.type)
{
case "touchstart": type = "mousedown"; break;
case "touchmove": type="mousemove"; break;
case "touchend": type="mouseup"; break;
default: return;
}
altKey, shiftKey, metaKey, button, relatedTarget);
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent(type, true, true, window, 1,
first.screenX, first.screenY,
first.clientX, first.clientY, false,
false, false, false, 0, null);
first.target.dispatchEvent(simulatedEvent);
event.preventDefault();
}
Все работает довольно хорошо ... за исключением случаев, когда я фокусирую ввод или текстовую область (в частности, плагин комментариев Facebook) и появляется клавиатура iOS.
После того, как я ввожу свой текст и нажимаю кнопку «отправить» над вводом, функция выдает неверные координаты Y для имитируемого события мыши (я полагаю, это происходит из-за того, что клавиатура изменяет высоту страницы), и в итоге я где-то нажимаю над этой кнопкой.
Вход размыт, но кнопка отправки не нажата. Как будто это не было достаточно печально, другая кнопка на странице (несколько пикселей выше отправляемой) становится нажатой и ссылается на другую страницу.
Я думал, что смогу отключить отображение, когда ввод стал сфокусированным, но кажется, что эти элементы плагинов комментариев Facebook вообще не доступны.
Любая помощь приветствуется, я работаю над этим уже несколько дней ...