C'è un modo per associare un evento a doppio tocco (in una singola riga di codice) per il safari mobile? Oppure, l'alternativa è implementarla intercettando due eventi a tocco singolo avvenuti in un breve periodo di tempo (esempio: http://appcropolis.com/blog/implementing-doubletap-on-iphones-and-ipads/)?Doppio tocco sul safari mobile
risposta
Risposta breve: è necessario implementare tramite due clic.
risposta reale: Ecco un'implementazione jQuery-libera di doppio tocco per Safari Mobile che richiede solo una riga di codice (per abilitare DblClick evento):
Inoltre, probabilmente avrai bisogno di disable mobile Safari's default zoom con questo meta-tag:
<meta name="viewport" content="width=device-width,user-scalable=no" />
Override dblclick
evento e utilizzare bind
, live
, on
, delegate
come per qualsiasi altro evento:
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);
}
};
funziona su Safari ma non funziona con il desktop chrome – alpere
Se si vuole avere di lavoro fare doppio clic sia sul browser e piattaforma iOS, si dovrebbe avere il seguente codice:
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);
}
}
};
Provalo qui:
Codice impressionante. Ha funzionato perfettamente –
- 1. Safari iPad: impedisce lo zoom sul doppio tocco
- 2. Come impedire il comportamento di doppio tocco predefinito (zoom, panoramica) in Mobile Safari su iOS4?
- 3. Doppio tocco su UIButton
- 4. Doppio tocco su UITableViewCell
- 5. Singolo tocco su MKMapView senza interruzioni doppio tocco zoom
- 6. OnSubmit con Mobile Safari
- 7. Come rilevare tocco e doppio tocco contemporaneamente utilizzando UITapGestureRecognizer?
- 8. Doppio tocco o due tocchi singoli?
- 9. jQuery sul caso 'doppio click' (DoppioClic per la telefonia mobile)
- 10. Mobile Safari Notifiche Push
- 11. Pulsante Indietro Safari mobile
- 12. Ridimensiona mathjax Sul Mobile
- 13. C'è un evento di tocco e doppio tocco in d3.js forza il grafico diretto
- 14. Eventi per lo scorrimento inerziale su Mobile Safari
- 15. Safari mobile - evento "touchend" che non si attiva quando viene rimosso l'ultimo tocco?
- 16. Invio modulo tastiera mobile Safari
- 17. Come rilevare tocco sul UIWebView
- 18. Regola CSS Modernizr ignorata da Safari (Mobile Safari pure)
- 19. Come risolvere il doppio tocco su Button Issue in Android?
- 20. Immagini sfocate in iphone 4 mobile safari
- 21. HTML5 cache video offline in safari mobile
- 22. setTimeout non funziona su safari mobile
- 23. scrollTop in mobile Safari non funzionante
- 24. Safari Mobile IOS 6 Scattare una foto
- 25. Manufatti di linea nel Safari mobile
- 26. Momento di scorrimento mobile Safari non funzionante
- 27. Safari mobile: manifest di cache + audio
- 28. GWT e HTML5 Video in Mobile Safari
- 29. Android: due diversi eventi per un singolo tocco e una lunga pressione/doppio tocco?
- 30. doppio o mobile, che è più veloce?
La doppia scheda non è utilizzata per lo zoom? 2 eventi tap vengono attivati anche nel browser? – Undefined
stesso evento che viene utilizzato per lo zoom e mi piacerebbe sovrascrivere il comportamento per una situazione concreta data – BreakPhreak
Scusa se non sono relativo al tuo problema ma se stai visualizzando una pagina web puoi specificare le impostazioni della vista nel meta tag. Puoi vederlo in iwebkit da snippetspace. –