一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

移動端事件介紹

 WindySky 2016-03-01

標簽:

移動端事件介紹

閱讀目錄

一:理解click的300ms的延遲響應

    Click事件在移動手機開發(fā)中有300ms的延遲,因為在手機早期,瀏覽器系統(tǒng)有放大和縮放功能,用戶在屏幕上點擊兩次之后,系統(tǒng)會觸發(fā)放大或者縮放功能,因此系統(tǒng)做了一個處理,當觸摸一次后,在300ms這段時間內有沒有觸摸第二次,如果觸摸了第二次的話,說明是觸發(fā)放大或縮放功能,否則的話是click事件。因此當click時候,所有用戶必須等待于300ms后才會觸發(fā)click事件。所以當在移動端使用click事件的時候,會感覺到有300ms的遲鈍。

二:手勢事件的介紹

touchstart:當手指放在屏幕上觸發(fā);

touchmove:當手指在屏幕上滑動時,連續(xù)地觸發(fā);

touchend:當手指從屏幕上離開時觸發(fā);

touchcancel: 當系統(tǒng)停止跟蹤時觸發(fā); 該事件暫時使用不到;

由于觸摸會導致屏幕動來動去,所以我們可以在這些事件中函數(shù)內部使用 event.preventDefault()來阻止掉默認事件(默認滾動).

先看看頁面的demo;HTML代碼如下:

<div id="touch">touch</div>

JS如下:

var EventUtil = {
    addHandler: function(element,type,handler) {
        if(element.addEventListener) {
            element.addEventListener(type,handler,false);
        }else if(element.attachEvent) {
            element.attachEvent("on"+type,handler);
        }else {
            element["on" +type] = handler;
        }
    },
    removeHandler: function(element,type,handler){
        if(element.removeEventListener) {
            element.removeEventListener(type,handler,false);
        }else if(element.detachEvent) {
            element.detachEvent("on"+type,handler);
        }else {
            element["on" +type] = null;
        }
    }
};
var touch = document.getElementById("touch");
EventUtil.addHandler(touch,"touchstart",function(event){
    console.log(event);
});

// 連續(xù)滑動觸發(fā)
EventUtil.addHandler(window,"touchmove",function(event){
    alert(1);
});
//當手指從屏幕上離開時觸發(fā);
EventUtil.addHandler(window,"touchend",function(event){
    alert(1);
})

如上代碼:在觸摸設備觸摸下,我們先來看看打印事件event如下:

技術分享

觸摸屬性如下介紹:

touches: 表示當前跟蹤的觸摸操作的touch對象的數(shù)組。

當一個手指在觸屏上時,event.touches.length = 1; 當二個手指在觸屏上時,event.touches.length=2, 以此類推;

targetTouches: 特定于事件目標的touch對象的數(shù)組。touch事件會毛冒泡,所以我們可以使用這個屬性指出目標對象。如下代碼演示:

EventUtil.addHandler(touch,"touchstart",function(event){

       console.log(event.targetTouches);

});

打印演示如下:

技術分享

changedTouches: 表示上次觸摸以來發(fā)生了什么改變的touch對象的數(shù)組。

每個touch對象都包含了以下幾個屬性:

clientX 觸摸目標在視口中的X坐標。

clientY觸摸目標在視口中的Y坐標。

Identifier: 標示觸摸的唯一ID。

pageX 觸摸目標在頁面中的X坐標。

pageY 觸摸目標在頁面中的Y坐標。

screenX觸摸目標在屏幕中的X坐標。

screenY 觸摸目標在屏幕中的Y坐標。

target  觸摸的DOM節(jié)點目標。

如下代碼:

var touch = document.getElementById("touch");

EventUtil.addHandler(touch,"touchstart",function(event){

       console.log(event);

});

如下截圖所示:

技術分享

三:觸摸事件的介紹

Gestures

  這個事件針對IOS設備上的,一個Gestures事件在兩個或更多手指觸摸屏幕時觸發(fā)。如果任何手指你正在監(jiān)聽的Gesture事件(gesturestart,gesturechange,gestureend)節(jié)點上,你將收到對應的gestures事件。

  Gesturestart:當一個手指已經按在屏幕上,而另一個手指又觸摸在屏幕時觸發(fā)。

  Gesturechange:當觸摸屏幕的任何一個手指的位置發(fā)生改變的時候觸發(fā)。

  Gestureend:當任何一個手指從屏幕上面移開時觸發(fā)。

觸摸事件和手勢事件的之間關系:

  當一個手指放在屏幕上時,會觸發(fā)touchstart事件,而另一個手指觸摸在屏幕上時觸發(fā)gesturestart事件,隨后觸發(fā)基于該手指的touchstart事件。

  如果一個或兩個手指在屏幕上滑動時,將會觸發(fā)gesturechange事件,但是只要有一個手指移開時候,則會觸發(fā)gestureend事件,緊接著會觸發(fā)touchend事件。

手勢的專有屬性:

  rotation: 表示手指變化引起的旋轉角度,負值表示逆時針,正值表示順時針,從0開始;

  scale: 表示2個手指之間的距離情況,向內收縮會縮短距離,這個值從1開始的,并隨距離拉大而增長。

四:基本知識點

1.判斷是否為iPhone

  Javasript代碼如下:

// 判斷是否為 iPhone :
function isAppleMobile() {
    return (navigator.platform.indexOf(‘iPad‘) != -1);
};

2.自動大寫與自動修正

 要關閉這兩項功能,可以通過autocapitalize 與autocorrect 這兩個選項:

<input type="text" autocapitalize="off" autocorrect="off" />

3.禁止 iOS 彈出各種操作窗口

-webkit-touch-callout:none

4. 禁止用戶選中文字

-webkit-user-select:none

5. 關于 iOS 系統(tǒng)中,中文輸入法輸入英文時,字母之間可能會出現(xiàn)一個六分之一空格

this.value = this.value.replace(/\u2006/g, ‘‘);

6. Andriod 上去掉語音輸入按鈕

input::-webkit-input-speech-button {display: none}

7. 判斷是否為微信瀏覽器;

function is_weixn(){
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i)=="micromessenger") {
        return true;
    } else {
        return false;
    }
}

五:屏幕旋轉事件(onorientationchange):

判斷屏幕是否旋轉的JS代碼如下:

function orientationChange() {
    switch(window.orientation) {
        case 0:
        alert("肖像模式 0,screen-width: " + screen.width + "; screen-height:" + screen.height);
        break;
        case -90:
        alert("左旋 -90,screen-width: " + screen.width + "; screen-height:" + screen.height);
        break;
        case 90:
        alert("右旋 90,screen-width: " + screen.width + "; screen-height:" + screen.height);
        break;
        case 180:
        alert("風景模式 180,screen-width: " + screen.width + "; screen-height:" + screen.height);
        break;
    };
};
// 添加測試監(jiān)聽函數(shù)代碼如下:
addEventListener(‘load‘, function(){
    orientationChange();
window.onorientationchange = orientationChange;
});

移動端事件介紹

標簽:

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本大学生精油按摩在线观看| 东北老熟妇全程露脸被内射| 国产亚洲神马午夜福利| 福利视频一区二区在线| 69老司机精品视频在线观看| 丰满人妻熟妇乱又乱精品古代| 女生更色还是男生更色| 亚洲最新中文字幕一区| 好吊妞在线免费观看视频| 日韩一本不卡在线观看| 制服丝袜美腿美女一区二区| 亚洲精品小视频在线观看| 色婷婷亚洲精品综合网| 一区二区日本一区二区欧美| 亚洲精品一区三区三区| 沐浴偷拍一区二区视频| 日韩精品一区二区亚洲| 日本人妻精品中文字幕不卡乱码| 欧美成人黄色一级视频| 国产精品推荐在线一区| 国产精品不卡高清在线观看 | 国产精品人妻熟女毛片av久| 成人综合网视频在线观看| 国产精品一区二区三区日韩av| 激情内射亚洲一区二区三区| 久久精品免费视看国产成人| 日韩偷拍精品一区二区三区| 国产免费一区二区三区av大片| 亚洲精品深夜福利视频| 国产精品一区二区三区激情| 色小姐干香蕉在线综合网| 日韩一区二区三区有码| 色欧美一区二区三区在线| 国产一区二区三区色噜噜| 国产不卡视频一区在线| 空之色水之色在线播放| 三级高清有码在线观看| 国产在线一区二区三区不卡| 成人日韩在线播放视频| 国产欧美性成人精品午夜| 国产视频在线一区二区|