I am programming a website mainly targetted at iOS Safari, but I also want it to respond to normal desktops.
So I have a need to make a button react to the events onmousedown onmouseup when on a desktop & for a button to react to ontouchstart ontouchend on iOS.
NOTE: I cannot do this(just register for both events):
<img id="button" onmousedown="this.src=''" onmouseup="this.src=''; doSomething();" ontouchstart="this.src=''" ontouchend="this.src=''"
Whilst this will work on desktop, on iOS, the image src does not change, something to do with the order of events iOS mimics.
So I am trying to transfer the javascript in ontouchstart into onmousedown but I get the error "eles[i] is undefined" when I press the button, the elements EXIST & have the correct ID's:
function enableDesktopGestures()
{
var eles = new Array(document.getElementById("topicIndex"),
document.getElementById("volumeToggle"),
document.getElementById("exitModuleBt"),
document.getElementById("prevBt"),
document.getElementById("nextBt"));
for (var i=0; i<eles.length; i++)
{
eles[i].addEventListener("mousedown", function() { eles[i].getAttribute("ontouchstart"); }, false);
eles[i].addEventListener("mouseup", function() { eles[i].getAttribute("ontouchend"); }, false);
}
}
// No error occurs with this but when I press the buttons nothing happens
function enableDesktopGestures()
{
var eles = new Array(document.getElementById("topicIndex"),
document.getElementById("volumeToggle"),
document.getElementById("exitModuleBt"),
document.getElementById("prevBt"),
document.getElementById("nextBt"));
for (var i=0; i<eles.length; i++)
{
var down = eles[i].getAttribute("ontouchstart");
var up = eles[i].getAttribute("ontouchend");
eles[i].onmousedown = function() { down; };
eles[i].onmouseup = function() { up; };
}
}