数日間、webkit-overflow-scrolling touch で立ち往生しています。私は非常に簡単なことをしようとしていますが、それは難しいことがわかっています!
特定の要素をクリックすると、それを JS で取得して何かを実行したいと考えています。ただし、「webkit-overflow-scrolling: touch」div にある場合、iOS の勢いのあるスクロールが引き継がれるとすぐに、要素が追いついていないように見えます。IE スクロールを開始し、リストがまだスクロールしている間に 1 つタップすると、間違った要素にアクセスしているように見えますか? 理想的には、勢いスクロールがいつ開始されたかを特定したいのですが、まだ進行中の場合は、最初に要素を選択するのではなく、タップするだけで停止しますが、基本的なことさえまだ機能していません。
iOS 6.01 を搭載した iPad 3 でこれをテストしています。onscroll イベントも気まぐれに見え、iOS の普遍的な使用とは異なり、スクロールの終了時以外にトリガーされることがあるため、webkit のスクロールは非常にバグが多いようです。
iScroll を使用したり、webkit-overflow-scroll をオフにしたりせずに、この動作を正しく機能させる方法についてアイデアがあれば、大歓迎です!
<style>
li {
height: 40px;
background: #999;
}
</style>
<div style="-webkit-overflow-scrolling: touch; height: 400px; background: #CCC; width: 400px; overflow: scroll;" >
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
<li>23</li>
<li>24</li>
<li>25</li>
<li>26</li>
<li>27</li>
</ul>
</div>
<div id="content"></div>
<script>
var elements = document.getElementsByTagName('li');
for(var i = 0, len = elements.length; i < len; i++) {
elements[i].ontouchstart = function (e) {
document.getElementById('content').innerHTML = document.getElementById('content').innerHTML+this.innerHTML;
}
}
</script>