無線web開發經驗(4)—— Javascript

DOM選擇器

html5為了我們提供了一個非常好的DOM選擇器,就是document.querySelector和document.querySelectorAll這兩個方法,這兩個方法在android2.1+以及ios3+以后,都可以使用,其接受的參數為css選擇器。在實際web開發中,有一部大部分工作會用到DOM的操作,通過這個神器,可以解決大多數的DOM的操作。建議大家使用的時候,可以多多使用這兩個方法。

其他的DOM的選擇器的兼容性并不是太好,建議不要使用。

庫和框架

對于jquery大家應該比較的熟悉,在web手機上也有一個輕量級的類庫工具,那就是Zepto,它的很多api接口保持和jquery的接口兼容,其體積非常小,gzip的包在10k左右,非常適合在手機上的無線環境中加載。建議大家在使用類庫的時候,推薦使用,其api地址為:http://zeptojs.com/
對于框架,我們熟悉的Angular以及比較新的vue、react等也都可以使用

click的300ms延遲響應

說到移動開發,不得不說一下這個click事件,在手機上被叫的最多的就是點擊的反應慢,就是click惹出來的事情。情況是在這樣,在手機早期,瀏覽器有系統級的放大和縮小的功能,用戶在屏幕上點擊兩次之后,系統會觸發站點的放大/縮小功能。不過由于系統需要判斷用戶在點擊之后,有沒有接下來的第二次點擊,因此在用戶點擊第一次的時候,會強制等待300ms,等待用戶在這個時間內,是否有用戶第二次的提交,如果沒有的話,就會click的事件,否則就會觸發放大/縮小的效果。
這個設計本來沒有問題,但是在絕大多數的手機操作中,用戶的單擊事件的概率大大大于雙擊的,因此所有用戶的點擊都必須要等300ms,才能觸發click事件,造成給用戶給反應遲鈍的反應,這個難以解決。業界普遍解決的方案是自己通過touch的事件完成tap,替代click。不過tap事件來實際的應用中存在下面所說的問題。
好消息是,就是手機版chrome21.0之后,對于viewport width=device-width,并且禁止縮放的設置,click點擊取消了300ms的強制等待時間,這個會使web的響應時間大大提升。但ios仍然存在這個問題。

移動事件

javascript有很多用戶交互相關事件,在移動上有一些比較特有的事件,大家在日常開發中,可能會接觸到,這些事件的特性,這里說一下:

  • orientationchange 這個事件是在當設備發生旋轉的時候,發生的事件。這個在某些場合會非常的實用。
  • touchstart、touchmove、touchend、touchcancel等四個觸摸事件,在所有移動web的中,都支持這四個事件。通過這兩個事件,可以模擬出各種用戶的手勢,不過由于其處理比較復雜,可能模擬最多的是tap事件。很多web移動類庫,都有tap的事件的實現,不過從實踐中,tap都不是處理的很好,tap的主要問題,有兩個,一個是tap和滾動同時觸發的時候,往往會觸發tap事件,二是tap的敏感度,經常會失誤觸發tap。
  • scroll事件 這個事件在PC上的觸發時機和手機上的觸發時機不同,scroll事件在手機上,只有在滾動停止的時候才會發生,因此這個事件在移動端用的比較少,因為觸發的時機已經晚了。對于需要在移動中,改變頁面結構的功能,用scroll是無法完成的。
手勢事件
  • touchstart //當手指接觸屏幕時觸發
  • touchmove //當已經接觸屏幕的手指開始移動后觸發
  • touchend //當手指離開屏幕時觸發
  • touchcancel
觸摸事件
  • gesturestart //當兩個手指接觸屏幕時觸發
  • gesturechange //當兩個手指接觸屏幕后開始移動時觸發
  • gestureend
屏幕旋轉事件
  • onorientationchange
檢測觸摸屏幕的手指何時改變方向
  • orientationchange
touch事件支持的相關屬性
  • touches
  • targetTouches
  • changedTouches
  • clientX    // X coordinate of touch relative to + the viewport (excludes scroll offset)
  • clientY    // Y coordinate of touch relative to + the viewport (excludes scroll offset)
  • screenX    // Relative to the screen
  • screenY    // Relative to the screen
  • pageX     // Relative to the full page (includes scrolling)
  • pageY     // Relative to the full page (includes scrolling)
  • target     // Node the touch event originated from
  • identifier   // An identifying number, unique to each touch event
  • 屏幕旋轉事件:onorientationchange
判斷屏幕是否旋轉
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;
};};

添加事件監聽

addEventListener('load', function(){
    orientationChange();
    window.onorientationchange = orientationChange;
});
雙手指滑動事件:
// 雙手指滑動事件
addEventListener('load',
    function(){window.onmousewheel = twoFingerScroll;},
    false  // 兼容各瀏覽器,表示在冒泡階段調用事件處理程序 (true 捕獲階段)
);
function twoFingerScroll(ev) {
    var delta =ev.wheelDelta/120;  //對 delta 值進行判斷(比如正負) ,而后執行相應操作
    return true;
};
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容

  • AMD 和 CMD 的區別有哪些?AMD 是 RequireJS 在推廣過程中對模塊定義的規范化產出。CMD 是 ...
    竿牘閱讀 704評論 0 1
  • zepto的tap事件點透問題分析: 一、點透是什么 你可能碰到過在列表頁面上創建一個彈出層,彈出層有個關閉的按鈕...
    夏沉閱讀 2,277評論 2 1
  • 這是一個最好的時代,因為我們站在潮流中;但也是一個最壞的時代,因為我們站在潮頭上。 META相關 1. 添加到主屏...
    泡芙小姐110閱讀 709評論 3 17
  • 實時驗證與結束驗證是有區別的,它們的約束規則不也不一樣,準備來說:結果驗證的約束規則是實時驗證的約束規則的一個特例...
    科研者閱讀 2,229評論 0 1
  • 首先,自我介紹一下,我叫長腿。是的,我的外號,不過,腿真的很長,不然就浪得虛名了,啥也不說了,先上照片 目前的職業...
    長腿Cherry閱讀 202評論 0 0