モバイルでもテキスト範囲選択とコピペがしたい
隠しtextareaのテキストが選択されるから、スマホだと変な場所に「コピー」等のメニューが出るかも?
調整が必要そう
全部自前で作らないといけなさそうですね。でも最近のiOSの選択UIとか、ほんとにくそな感じなので、マシなのが作れるかもしれない。

やってる

範囲選択を作るのは、 touchstart
, touchmove
, touchend
イベントを使えばできそう
発生するeventオブジェクトの形式が mousedown
や mousemove
と違う
e.pageX
e.pageY
がない
関数のつなぎなおしだけではできない
e.preventDefault()
すると怒られる
touchstart
の後、押しっぱなしにしていると mousedown
イベントが発生する
mousedown
と同時に右クリックメニューが表示されてしまう
mobileの時は mousedown
を殺す必要がある
マウスと同じノリでタッチを実装すると、画面スクロールと衝突してしまう
タッチの挙動
テキスト範囲選択がない時
touchend
カーソル表示
touchmove
画面スクロール(何もしない、OSに任せる)
touchhold
近傍の単語を範囲選択状態にする
テキスト範囲選択がある時
範囲選択外を
touchstart
範囲選択を解除
カーソル表示
範囲選択内を
touchstart
カーソルを隠す
画面スクロール固定 $('body').css({overflow: 'hidden'})
selection startとendの近い方をタッチ箇所に再設定
touchmove
範囲選択を調整
画面スクロール固定 e.preventDefault
touchend
カーソルを表示
画面スクロール固定を解除 $('body').css({overflow: ''})