-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
タッチイベント対応のIE10、IE11用で、h5trackするときに画面スクロールしないようにする #299
Comments
h5trackstart時にイベントターゲットに対してtouch-action(IE10なら-ms-touch-action)にnoneを設定するようにしました。(IE10,11用) h5trackstart時に要素に直接touch-actionが指定されていた場合その値を覚えておき、h5track中はnoneにして、h5trackend時に覚えておいた値に戻しています。 もともと要素に直接指定されてい値(≠computedStyle)は、element.style.touchAction(msTouchAction)で取得できることを確認しました。 (要素に直接は指定されていなくてcssファイルやstyleタグで指定されている場合はelement.styleは空文字なので、h5trackend時には空文字に戻り、cssやstyleタグで指定したスタイルになります。)
SurfaceのIE11 で確認したところ、pointerdown時にその要素のtouch-action:noneに指定してもスクロールされてしまいました。 また、preventDefault(), stopPropagation(), stopImmediatePropagation()を呼んでもスクロールされてしまいます。 addEventListenerで、useCapture=trueにしてハンドラを追加しても同様でした。 element.onpointermoveにハンドラを記述しても同様でした。 pointerdown,mousedown,pointermove,mousemoveの各イベントで上記の対応を行って動作確認しましたが、それでもスクロールされてしまいました。 別の対応を考えます。 |
コントローラのイベントハンドラのバインド時に、h5trackstartの対象要素に対してtouch-actionに値(none)を設定するようにします。 より具体的には、h5.settings.trackTargetTouchAction 設定を追加し、この値をバインド時にセットします。 また、nullが指定されていた場合は、touch-actionには何も設定しないようにします。 |
参考用: ドラッグ アンド ドロップ タッチ サポート |
名前を以下に変更します。 |
(bindByBindObject内で、touch-actionの設定を行うように変更します。)
move -> moveEventType end -> endEventType
制限事項: hifiveのコントローラ(のイベントハンドラ)の仕様では、 このため、バインド後に追加される要素でh5track*イベントを使用したい場合は、ユーザー自身がtouch-action: noneのスタイルを設定する必要があります。 |
IE10,11で、タッチでトラック操作を行うと画面がスクロールしてしまう。
FW側でスクロールしないように制御する。
具体的にはh5trackstart時に、preventDefaultされなかったらtouch-action:none(IE10なら-ms-touch-action:none)にする。
h5trackendの時に元に戻す。
元に戻すときの処理は、element.style.touchActionを覚えておき、h5tracnendの時に覚えていた値を代入する。
element.style.xxxにはそのエレメントに直接指定しているもの(≠computedStyle)が格納されているはずであり、クラスやスタイルで直接指定でない場合のスタイルの指定がある場合は、sytle.xxxは空文字のはずである。(クロスブラウザでこの挙動になるか確認する)
touchActionの無いブラウザ(undefined)なら何もしない。
The text was updated successfully, but these errors were encountered: