2012-04-23 86 views
7

是否有綁定到移動Safari的雙擊事件(在單行代碼中)的方法?或者,另一種方法是實施攔截在一段短時間內發生的兩次單擊事件(例如:http://appcropolis.com/blog/implementing-doubletap-on-iphones-and-ipads/)?在移動Safari上雙擊

+0

雙標籤不用於縮放嗎?是否在瀏覽器中觸發了2次輕擊事件? – Undefined 2012-04-23 09:47:01

+0

同樣的事件,用於縮放,我想重寫具體給定情況下的行爲 – BreakPhreak 2012-04-23 09:49:18

+0

對不起,如果我不涉及到你的問題,但如果你顯示一個網頁,你可以指定視口設置的元標記。你可以從snippetspace的iwebkit中看到這個。 – 2012-05-17 16:45:02

回答

6

簡答:您必須通過兩次點擊來實現。

實際答案:這裏是一個jQuery - 自由執行雙敲擊移動Safari瀏覽器僅需要一行代碼(以啓用DBLCLICK事件):

此外,您可能需要使用此元標記disable mobile Safari's default zoom

<meta name="viewport" content="width=device-width,user-scalable=no" /> 
0

覆蓋dblclick事件並使用bindliveondelegate像任何其他事件:如果你想有工作請雙擊瀏覽器和IOS平臺既

jQuery.event.special.dblclick = { 
    setup: function(data, namespaces) { 
     var elem = this, 
      $elem = jQuery(elem); 
     $elem.bind('touchend.dblclick', jQuery.event.special.dblclick.handler); 
    }, 

    teardown: function(namespaces) { 
     var elem = this, 
      $elem = jQuery(elem); 
     $elem.unbind('touchend.dblclick'); 
    }, 

    handler: function(event) { 
     var elem = event.target, 
      $elem = jQuery(elem), 
      lastTouch = $elem.data('lastTouch') || 0, 
      now = new Date().getTime(); 

     var delta = now - lastTouch; 
     if(delta > 20 && delta<500){ 
      $elem.data('lastTouch', 0); 
      $elem.trigger('dblclick'); 
     }else 
      $elem.data('lastTouch', now); 
    } 
}; 
+0

適用於safari,但不適用於桌面鍍鉻 – alpere 2014-02-11 08:24:47

3

,你應該有下面的代碼:

jQuery.event.special.dblclick = { 
    setup: function(data, namespaces) { 
     var agent = navigator.userAgent.toLowerCase(); 
     if (agent.indexOf('iphone') >= 0 || agent.indexOf('ipad') >= 0 || agent.indexOf('ipod') >= 0) { 
      var elem = this, 
       $elem = jQuery(elem); 
      $elem.bind('touchend.dblclick', jQuery.event.special.dblclick.handler); 
     } else { 
      var elem = this, 
       $elem = jQuery(elem); 
      $elem.bind('click.dblclick', jQuery.event.special.dblclick.handler); 
     } 
    }, 
    teardown: function(namespaces) { 
     var agent = navigator.userAgent.toLowerCase(); 
     if (agent.indexOf('iphone') >= 0 || agent.indexOf('ipad') >= 0 || agent.indexOf('ipod') >= 0) { 
      var elem = this, 
       $elem = jQuery(elem); 
      $elem.unbind('touchend.dblclick'); 
     } else { 
      var elem = this, 
       $elem = jQuery(elem); 
      $elem.unbind('click.dblclick', jQuery.event.special.dblclick.handler); 
     } 
    }, 
    handler: function(event) { 
     var elem = event.target, 
      $elem = jQuery(elem), 
      lastTouch = $elem.data('lastTouch') || 0, 
      now = new Date().getTime(); 
     var delta = now - lastTouch; 
     if (delta > 20 && delta < 500) { 
      $elem.data('lastTouch', 0); 
      $elem.trigger('dblclick'); 
     } else { 
      $elem.data('lastTouch', now); 
     } 
    } 
}; 

嘗試在這裏:

http://jsfiddle.net/UXRF8/

+0

真棒代碼。完美工作。 – 2017-08-08 04:53:30