是否有綁定到移動Safari的雙擊事件(在單行代碼中)的方法?或者,另一種方法是實施攔截在一段短時間內發生的兩次單擊事件(例如:http://appcropolis.com/blog/implementing-doubletap-on-iphones-and-ipads/)?在移動Safari上雙擊
7
A
回答
6
簡答:您必須通過兩次點擊來實現。
實際答案:這裏是一個jQuery - 自由執行雙敲擊移動Safari瀏覽器僅需要一行代碼(以啓用DBLCLICK事件):
此外,您可能需要使用此元標記disable mobile Safari's default zoom:
<meta name="viewport" content="width=device-width,user-scalable=no" />
0
覆蓋dblclick
事件並使用bind
,live
,on
,delegate
像任何其他事件:如果你想有工作請雙擊瀏覽器和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);
}
}
};
嘗試在這裏:
+0
真棒代碼。完美工作。 – 2017-08-08 04:53:30
相關問題
- 1. 在移動設備上點擊並雙擊事件
- 2. 在移動Safari
- 3. 在移動Safari
- 4. ngTouch快速點擊無法在移動Safari上工作
- 5. OSX上的移動Safari
- 6. 只在移動Safari
- 7. 按鈕將不會點擊移動Safari
- 8. jQuery觸發器點擊移動Safari(iPad)
- 9. 在iphone上移動safari支持xpath嗎?
- 10. offlineaduiocontext.resume()不會在移動Safari上觸發
- 11. 元素只在Safari上移動懸停
- 12. 移動Safari上的水平滾動
- 13. iOS 3 - 移動Safari上的點擊事件
- 14. 無法點擊移動Safari上的固定位置元素
- 15. 在textfield上雙擊
- 16. 移動,雙擊一個ImageView的
- 17. 的jQuery的「雙擊」事件(DBLCLICK移動)
- 18. 在WKWebView上禁用雙擊滾動
- 19. 請解釋在移動Safari
- 20. removeClass();不會在Safari移動
- 21. 移動屏幕上的觸摸textview和雙擊吐司android
- 22. ios safari奇怪的雙擊/懸停behviour
- 23. 啓用快速(雙?)點擊Ipad Safari
- 24. Safari iPad:防止雙擊變焦
- 25. iOS Safari雙擊按鈕問題
- 26. OnSubmit與移動Safari
- 27. Safari移動全屏
- 28. 如何防止在PhoneGap中雙擊移動滾動?
- 29. 移動Safari上高度爲100%的div
- 30. 移動Safari多個相機上傳
雙標籤不用於縮放嗎?是否在瀏覽器中觸發了2次輕擊事件? – Undefined 2012-04-23 09:47:01
同樣的事件,用於縮放,我想重寫具體給定情況下的行爲 – BreakPhreak 2012-04-23 09:49:18
對不起,如果我不涉及到你的問題,但如果你顯示一個網頁,你可以指定視口設置的元標記。你可以從snippetspace的iwebkit中看到這個。 – 2012-05-17 16:45:02