2012-06-03 10 views
8

Ho provato quanto segue (.myviewer è un div) ...qual è il modo corretto per innescare un evento di tocco sull'iPad con jQuery

$('.myviewer').click(); 

    and 
$('.myviewer').trigger('touchstart'); 

    and 
$('.myviewer').trigger('click'); 

Tutti i lavori su un computer, ma non un iPad. Che cosa sto facendo di sbagliato?

Ecco ciò che il corpo della pagina HTML sembra ...

<body> 
    <div class="myviewer" onclick="window.open('myPDFFile.pdf');">Programmatically clicked</div> 
</body> 

E per completare questo qui è il mio codice jQuery ...

$(document).ready(function() { 
var isMobile = { 
    Android : function() { 
     return navigator.userAgent.match(/Android/i) ? true : false; 
    }, 
    BlackBerry : function() { 
     return navigator.userAgent.match(/BlackBerry/i) ? true : false; 
    }, 
    iOS : function() { 
     return navigator.userAgent.match(/iPhone|iPad|iPod/i) ? true : false; 
    }, 
    Windows : function() { 
     return navigator.userAgent.match(/IEMobile/i) ? true : false; 
    }, 
    any : function() { 
     return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows());        } 
}; 

if(isMobile.any()) { 
    $('.myviewer').clck(); //this does works on computers but not on iPad 
}else { 
    var markup = "<object data='myPDFFile.pdf#toolbar=1&amp;navpanes=1&amp;scrollbar=0&amp;page=1&amp;view=FitH' type='application/pdf' width='100%' height='100%'> </object>"; 
    $('.myviewer').append(markup); 
};  

});

+0

possibile duplicato di [Come recogized evento di tocco utilizzando jQuery per il browser Safari iPad? È possibile?] (Http://stackoverflow.com/questions/4755505/how-to-recogized-touch-event-using-jquery-for-ipad-safari-browser-is-it-possibl) – Esailija

+0

Dubito che il codice funziona anche su un computer poiché non si passa nessuna funzione a '.bind' ... – Esailija

+0

Lasciatemi chiarire. Non sto chiamando tutti quelli tutti insieme. Stavo solo mostrando quello che ho provato. Ognuno è un modo in cui ho provato a far scattare l'evento ... una singola riga di codice. Ad esempio $ ('. Myviewer'). Click(); lavora su un computer da solo. Hai ragione anche se non penso che le chiamate obbligatorie dovrebbero essere lì. Li rimuoverò. Inoltre, non penso che questo sia un duplicato, l'altro è "Come riconoscere un evento touch". La mia domanda è come attivare l'evento. – user278859

risposta

9

Per .trigger fare qualsiasi cosa, è necessario associare prima l'evento, che non è stato fatto. onclick="" non conta.

Per associare l'evento primo utilizzo:

$(document).ready(function() { 
    $('.myviewer').on("touchstart", function(){ 
     $(this).remove(); 
    }); 

    var isMobile = { //...your original code continues here 

Quindi è possibile in seguito innescare:

$('.myviewer').trigger('touchstart'); 
+0

Grazie. Il window.open nel div non funziona. Se è perché è in html, allora sono un po 'disorientato sul perché .click() sui computer funzionino. In ogni caso ho risolto il problema che mi ha portato a questa domanda, perché window.open non funziona da jquery sull'iPad, quindi procedo. Grazie per il tuo aiuto. – user278859

+0

@ user278859 L'ho spiegato qualche tempo fa, 'click()' è un caso molto particolare ed è stato un "incidente" ha funzionato con "evento html" e ".trigger" – Esailija

Problemi correlati