Adición en el siguiente código funciona.
El problema es iPhones dont provocar eventos de clic. Levantan eventos "táctiles". Muchas gracias, manzana. ¿Por qué no podrían simplemente mantenerlo estándar como todos los demás? De todos modos, gracias Nico por la propina.
crédito a: http://ross.posterous.com/2008/08/19/iphone-touch-events-in-javascript
$(document).ready(function() {
init();
$(document).click(function (e) {
fire(e);
});
});
function fire(e) { alert('hi'); }
function touchHandler(event)
{
var touches = event.changedTouches,
first = touches[0],
type = "";
switch(event.type)
{
case "touchstart": type = "mousedown"; break;
case "touchmove": type = "mousemove"; break;
case "touchend": type = "mouseup"; break;
default: return;
}
//initMouseEvent(type, canBubble, cancelable, view, clickCount,
// screenX, screenY, clientX, clientY, ctrlKey,
// altKey, shiftKey, metaKey, button, relatedTarget);
var simulatedEvent = document.createEvent("MouseEvent");
simulatedEvent.initMouseEvent(type, true, true, window, 1,
first.screenX, first.screenY,
first.clientX, first.clientY, false,
false, false, false, 0/*left*/, null);
first.target.dispatchEvent(simulatedEvent);
event.preventDefault();
}
function init()
{
document.addEventListener("touchstart", touchHandler, true);
document.addEventListener("touchmove", touchHandler, true);
document.addEventListener("touchend", touchHandler, true);
document.addEventListener("touchcancel", touchHandler, true);
}
que no es mi entendimiento de que en el iPhone nunca se levanta en realidad eventos de clic ... no es algo así como un evento de contacto? – bevacqua
probablemente podría Christopher. Sin embargo, es solo un código de ejemplo. – Garrows