03_移動端事件基礎

移動端事件基礎

queryselector的坑
  • queryselectorAll:靜態列表
  • queryselector:靜態列表的第一個
移動端事件

移動端事件:觸屏事件、指針時間(用的少)

移動端: touchstart touchmove(不可能單獨觸發) touchend
pc端: mousedown mousemove(可以單獨觸發) mouseup

阻止事件的默認行爲,阻止事件的冒泡
ev.preventDefault(); ev.stopPropagation();

阻止事件的默認行爲可以查看 event.cancelable 屬性來判斷一個事件
的默認動作是否可以被取消.
cancelable屬性爲true的事件上調用 preventDefault才生效
怎麼全局阻止默認事件
隱患:頁面所有滾動條失效
解決:自定義系統滾動條

document.addEventListener("touchstart",function(ev){
    ev=ev||event;
    ev.preventDefault();
    // 注:在pc端測試會報錯,但在真機上是正常的
})
事件點透
1.pc端的事件可以在移動端觸發
2.PC端事件有300毫秒延遲
3.移動端事件不會有延遲

主要表現:
    覆蓋層下的超鏈接會被觸發;
    跳轉後相同位置元素會被點擊
    
解決辦法:
    1.不要混用touch和click
    2.全局阻止默認事件+移動端跳轉方案
event 3類手指列表
changedTouches:觸發當前事件的手指列表
targetTouches:觸發當前事件時元素上的手指列表
touches:觸發當前事件時屏幕上的手指列表
移動端常見問題
-webkit-appearance:none //解決圓角按鈕過圓

font boosting //max-height: 999999px;

禁止電話與郵箱:
<meta name="format-detection"content="telephone=no,email=no"/>
需要使用時,用a標籤:
<a href="tel:110">1383838438</a>
<a href="mailto:[email protected]">1383838438</a>
取消右鍵菜單:
右鍵監聽:contextmenu
左鍵監聽:click

document.oncontextmenu=function(){
	return false;
	// 如果其中某個元素需要右鍵菜單,
	// 可以通過阻止事件冒泡行爲來實現
	/*
	給元素加contextmenu監聽
	ev = ev || event
	ev.stopPropagation();
	*/
}
移動端模板:
meta標籤
全面阻止事件默認行爲
一個適配方案
ie6常見兼容性問題:
ie6最小高度問題
ie6最小高度是19px
解決辦法:
    父容器font-size設爲0,最小高度2px,默認不會小於19px
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章