モバイル側ページtouchが「貫通」するソリューション
1299 ワード
モバイル側ページtouchが「貫通」するソリューション
1.移動先ページtouchが貫通する
H 5ページが移動先に表示される場合、clickイベントは300 msの遅延があるため、touchイベントを用いることが望ましい.touchイベントは
1.touchstart:指をDOM要素に置きます. 2.touchmove:指がDOM要素をドラッグします. 3.touchend:指をDOM要素から外します.
touchが「貫通」するのは重複する領域で、隠された要素がclickにバインドされ、隠された要素がtouchイベントにバインドされ、touch後に隠された要素が隠すと、clickがtouch後に遅延してトリガーされるため、ブラウザはカバーの要素にclickがトリガーされたと勘違いします.
移動端のclickはtouchの後で、トリガをシミュレートします.トリガの順序はt o u c h s t o r t o u c h m o v e touchendmousedownmousemovemouseenterclick
2.解決策は次のとおりです.
カバーされた要素はtouchendイベントをバインドし、そのtouchendイベントをトリガーすると、カバーされた要素をクリックできないように設定します.
同時に与える
隠し要素バインドclick
イベントは、clickイベントでイベントのバブルを阻止します.
3.cssのpointer-eventsプロパティ
auto-pointer-eventsプロパティが定義されていないのと同じ効果で、マウスは現在のレイヤを貫通しません.
none-要素はマウスイベントのターゲットではなく、マウスは現在のレイヤをリスニングせず、下のレイヤの要素をリスニングします.しかし、そのサブエレメントがpointer-eventsを他の値に設定している場合、autoなど、マウスはこのサブエレメントを監視します.マウスイベントをキャプチャすることなく、マウスをオブジェクトに貫通させる
1.移動先ページtouchが貫通する
H 5ページが移動先に表示される場合、clickイベントは300 msの遅延があるため、touchイベントを用いることが望ましい.touchイベントは
1.touchstart:指をDOM要素に置きます. 2.touchmove:指がDOM要素をドラッグします. 3.touchend:指をDOM要素から外します.
touchが「貫通」するのは重複する領域で、隠された要素がclickにバインドされ、隠された要素がtouchイベントにバインドされ、touch後に隠された要素が隠すと、clickがtouch後に遅延してトリガーされるため、ブラウザはカバーの要素にclickがトリガーされたと勘違いします.
移動端のclickはtouchの後で、トリガをシミュレートします.トリガの順序はt o u c h s t o r t o u c h m o v e touchendmousedownmousemovemouseenterclick
2.解決策は次のとおりです.
カバーされた要素はtouchendイベントをバインドし、そのtouchendイベントをトリガーすると、カバーされた要素をクリックできないように設定します.
$("#picList").css("pointer-events","none");
同時に与える
隠し要素バインドclick
イベントは、clickイベントでイベントのバブルを阻止します.
$('.tab1').on('click',function(event){
var evt = event || window.event;
//IE cancelBubble=true FF stopPropagation
evt.stopPropagation ? evt.stopPropagation() : (evt.cancelBubble=true);
});
3.cssのpointer-eventsプロパティ
auto-pointer-eventsプロパティが定義されていないのと同じ効果で、マウスは現在のレイヤを貫通しません.
none-要素はマウスイベントのターゲットではなく、マウスは現在のレイヤをリスニングせず、下のレイヤの要素をリスニングします.しかし、そのサブエレメントがpointer-eventsを他の値に設定している場合、autoなど、マウスはこのサブエレメントを監視します.マウスイベントをキャプチャすることなく、マウスをオブジェクトに貫通させる