У нас есть веб-страница, которая содержит несколько тегов div / canvas, позволяющих пользователю рисовать:
<div id="Drawing" class="FormField" style="position: absolute; top: 444px; left: 121px;
width: 302px; height: 185px; font-size: 10pt;">
<canvas id="DrawingCanvas" class="InkFormField" width="302" height="185" style=""></canvas>
</div>
<div id="Picture" class="FormField" style="position: absolute; top: 915px; left: 121px;
width: 302px; height: 167px; font-size: 10pt;">
<canvas id="PictureCanvas" class="InkFormField" width="302" height="167" style=""></canvas>
</div>
Второй div / canvas (с верхом: 915px) изначально не виден, но его можно прокрутить и подписать.
Рисунок довольно простой код, который корректно работает для настольных браузеров (с использованием соответствующих событий мыши). Для iPad нам нужно использовать сенсорные события, чтобы определить точки для рисования:
var touchX = e.changedTouches[0].screenX - canvasLeft;
var touchY = e.changedTouches[0].screenY - canvasTop;
(где canvasLeft и canvasTop - относительные смещения страницы к холсту).
Все работает правильно, даже после прокрутки до второго div / canvas.
Однако после добавления внешнего кода к вышеуказанному коду (с переполнением: авто ) значения touchX и touchY перестают быть правильными после прокрутки div
<div style="overflow: auto">
<div id="Drawing" class="FormField" style="position: absolute; top: 444px; left: 121px;
width: 302px; height: 185px; font-size: 10pt;">
<canvas id="DrawingCanvas" class="InkFormField" width="302" height="185" style=""></canvas>
</div>
<div id="Picture" class="FormField" style="position: absolute; top: 915px; left: 121px;
width: 302px; height: 167px; font-size: 10pt;">
<canvas id="PictureCanvas" class="InkFormField" width="302" height="167" style=""></canvas>
</div>
</div>
На самом деле они, похоже, отключены именно на эту сумму! Согласно документации, свойство screenY должно учитывать прокрутку (но, возможно, это относится к прокрутке страницы, а не к прокрутке внешнего div).
Есть ли другое свойство события касания, которое сообщает о смещениях x и y относительно прокрученного div , так что точки могут быть нарисованы правильно?
В качестве альтернативы, есть ли способ отслеживать количество прокрутки , чтобы можно было применить соответствующее смещение к вычислениям touchX и touchY?