国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript 事件——“事件類型”中“設備事件”和“觸摸與手勢事件”的注意要點

Ethan815 / 684人閱讀

摘要:對象不包含任何信息事件事件,該事件已被移除,應該使用事件但是事件仍然是實驗性的事件,目前有部分瀏覽器暫時不支持。每個觸摸事件的對象都提供了在鼠標事件中常見的屬性。

設備事件 orientationchange事件

該事件的window.orientation屬性中包含3個值:0表示肖像模式、90表示左旋轉的橫向模式、-90表示右旋轉的橫向模式。event對象不包含任何信息:

window.onload = function () {
    var div = document.getElementById("info");
    div.innerHTML = "Current orientation is " + window.orientation;
};
window.addEventListener("orientationchange", function () {
    div.innerHTML = "Current orientation is " + window.orientation;
});
deviceorientationevent事件

MozOrientation事件,該事件已被移除,應該使用DeviceOrientationEvent事件
Warning: This experimental API was removed in Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), when support for the standard DeviceOrientationEvent was implemented. You should use that API instead.

但是DeviceOrientationEvent事件仍然是實驗性的事件,目前有部分瀏覽器暫時不支持。

該事件的意圖是告訴開發者設備在空間中朝向哪兒,設備在三維空間中是靠x、y、z軸來定位的。

事件對象包含:

alpha:圍繞z軸旋轉,y軸的度數差;0~360的值;

beta:圍繞x軸旋轉,z軸的度數差;-180~180的值;

gamma:圍繞y軸旋轉,z軸的度數差;-90~90的值;

absolute:表示設備是否返回一個絕對值;

compassCalibrated:表示設備的指南針是否校準過;

如:

window.addEventListener("deviceorientation", function () { var info = document.getElementById("info"); info.style.webkitTransform = "rotate(" + -Math.round(event.alpha) + "deg)"; });
devicemotion事件

該事件是要告訴開發者設備什么時候移動,如通過該事件檢測設備是否在往下掉,是否被走著的人拿在手里等等。

屬性:

acceleration:包含x、y、z屬性的對象,不考慮重力的情況下,每個方向的加速度;

accelerationIncludingGravity:包含x、y、z屬性的對象,在考慮z自然重力加速度的情況下,每個方向上的加速度;

interval:毫秒值,必須在另一個devicemotion事件觸發前傳入;

rotationRate:包含表示方向的alpha、beta和gamma屬性的對象;

如果讀取不到值,會返回null,所以應該先檢測它們的值是否為null:

window.addEventListener("devicemotion", function () {
    if (event.rotationRate !== null) {
        // statement
    }
});
觸摸與手勢事件 觸摸事件 兼容DOM的觸摸事件

touchstart:觸摸屏幕時觸發;

touchmove:滑動時觸發,調用preventDefault()函數可阻止滾動;

touchend:當手指從屏幕上移開時觸發;

touchcancel:當系統停止跟蹤觸摸時觸發;

上面的事件都會冒泡,都可以取消。每個觸摸事件的event對象都提供了在鼠標事件中常見的屬性。

跟蹤觸摸的事件

touches:表示當前跟蹤的觸摸操作的Touch對象的數組;

targetTouches:特定于事件目標的Touch對象的數組;

changedTouches:表示自上次觸摸以來發生了什么改變的Touch對象的數組;

每個Touch對象包含的屬性:

clientX:視口中的x坐標;

clientY:;

identifier:標識觸摸的唯一ID;

pageX:觸摸目標在頁面中的x坐標;

pageY:;

screenX:觸摸目標在屏幕中的x坐標;

screenY:;

target:觸摸DOM節點目標;

如:

function handleTouchEvent () {
    if (event.touches.length == 1) {
        var output = document.getElementById("output");
        switch (event.type) {
            case "touchstart":
                output.innerHTML = "Touch started (" + event.touches[0].clientX + "," + event.touches[0].clientY + ")";
                break;
            case "touchmove":
                event.preventDefault();
                output.innerHTML = "Touch moved (" + event.changedTouches[0].clientX + "," + event.changedTouches[0].clientY + ")";
                break;
            case "touchend":
                output.innerHTML = "Touch ended (" + event.changedTouches[0].clientX + "," + event.changedTouches[0].clientY + ")";
                break;
        }
    }
}
window.addEventListener("touchstart", handleTouchEvent);
window.addEventListener("touchmove", handleTouchEvent);
window.addEventListener("touchend", handleTouchEvent);

暫時不清楚為什么touchend無反應。

手勢事件

gesturestart:當一個手指已經按在屏幕上而另一個手指又觸摸屏幕時觸發;

gesturechange:當觸摸屏幕的任何一個手指的位置發生變化時觸發;

gestureend:當任何一個手指從屏幕上面移開時觸發;

其中event還包括除鼠標事件的屬性之外另外兩個屬性:rotationscale:其中rotation屬性表示旋轉的角度,從0開始,負值表示逆時針旋轉,正值表示順時針旋轉;scale屬性從1開始,隨著距離拉大而增加,隨著距離縮小而減小:

var output = document.getElementById("output");
document.addEventListener("gesturestart", function () {
    output.innerHTML = "rotation: " + event.rotation + ";" + "scale: " + event.scale;
});
document.addEventListener("gestureend", function () {
    output.innerHTML = "rotation: " + event.rotation + ";" + "scale: " + event.scale;
});
document.addEventListener("gesturechange", function () {
    event.preventDefault();
    output.innerHTML = "rotation: " + event.rotation + ";" + "scale: " + event.scale;
});

寫成:

function handleGestureEvent() {
    var output = document.getElementById("output");
    switch (event.type) {
        case "gesturestart":
            output.innerHTML = "rotation: " + event.rotation + ";" + "scale: " + event.scale;
            break;
        case "gestureend":
            output.innerHTML = "rotation: " + event.rotation + ";" + "scale: " + event.scale;
            break;
        case "gesturechange":
            event.preventDefault();
            output.innerHTML = "rotation: " + event.rotation + ";" + "scale: " + event.scale;
            break;
    }
}
document.addEventListener("gesturestart", handleGestureEvent);
document.addEventListener("gestureend", handleGestureEvent);
document.addEventListener("gesturechange", handleGestureEvent);

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91605.html

相關文章

  • 高程3總結#第13章事件

    摘要:所有節點中都包含這兩個方法,并且它們都接受個參數要處理的事件名,作為事件處理程序的函數和一個布爾值。和支持這個事件。 事件 事件流 事件流描述的是從頁面中接收事件的順序 事件冒泡 IE的事件流叫做事件冒泡,即事件開始時由最具體的元素(文檔中嵌套層次最深的那個節點)接收,然后逐級向上傳播到較為不具體的節點showImg(https://segmentfault.com/img/bVbg5...

    RyanQ 評論0 收藏0
  • JavaScript高級程序設計(第3版)》——事件(十三)

    摘要:事件捕獲團隊提出的,與事件冒泡相反。事件處理程序事件用戶或瀏覽器自身執行的某種動作。事件處理程序響應某個事件的函數。事件委托目的解決事件處理程序過多問題。流程創建事件對象初始化事件對象觸發事件 事件是將JavaScript與網頁聯系在一起的主要方式。 事件流 事件流:從頁面中接收到事件的順序。 事件冒泡 IE的事件流叫做事件冒泡:事件開始時由最具體 的元素(文檔中嵌套層次最深的那個節點...

    DandJ 評論0 收藏0
  • js基礎知識筆記

    摘要:常見內存泄漏情形全局變量被忘記的或者閉包引用閉包概念有權訪問另一個函數作用域的變量的函數。會話存儲刷新頁面依舊存在,與在持久上不同外,其余一致。請求向指定的資源提交被處理的數據,數據量和類型沒限制,不主動緩存,頁面刷新數據會被重新提交。 defer 腳本延遲執行,適用于外部腳本文件async 立即下載,不保證順序(建議不修改DOM,避免重繪) CDN加速 (Content De...

    李文鵬 評論0 收藏0
  • JavaScript 事件——“事件類型“UI事件注意要點

    摘要:事件這個事件在文檔被完全卸載后觸發。事件當瀏覽器窗口被調整到一個新的高度或寬度,就會觸發該事件。事件該事件雖然在對象上發生的,但實際表示的是頁面中響應元素的變化。事件關于等事件以后再討論事件關于等事件以后再討論事件關于等事件以后再討論 DOM3級事件規定了一下幾類事件 UI事件,當用戶與頁面上的元素交互時除法; 焦點事件,元素獲得或失去焦點; 鼠標事件,通過鼠標在頁面上執行操作; 滾...

    sushi 評論0 收藏0
  • JavaScript 事件——“模擬事件注意要點

    DOM中的事件模擬 三個步驟: 首先通過document.createEvent()方法創建event對象,接收一個參數,即表示要創建的事件類型的字符串: UIEvents(DOM3中的UIEvent)鼠標和鍵盤事件; MouseEvents(DOM3中的MouseEvent)鼠標事件; MutationEvents(DOM3中的MutationEvent)變動事件; HTMLEvents(沒有...

    BakerJ 評論0 收藏0

發表評論

0條評論

Ethan815

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<