我正在編寫一個主要針對iOS Safari的網站,但我也希望它能夠響應正常的桌面。將ontouchstart中的代碼轉換爲onmousedown
所以我有一個需要做一個按鈕,對onmouseup onmouseup事件作出反應,當在桌面上&按鈕對ontouchstart ontouchend在iOS上作出反應。
注:我不能這樣做(剛註冊這兩個事件):
<img id="button" onmousedown="this.src=''" onmouseup="this.src=''; doSomething();" ontouchstart="this.src=''" ontouchend="this.src=''"
雖然這會工作在桌面上,在iOS,圖像SRC不改變,是與事件的順序iOS模仿。
所以我想在ontouchstart轉移javascript改成onmousedown事件,但我得到的錯誤 「ELES [i]是未定義」 當我按下按鈕,元素EXIST &有正確的ID:
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; };
}
}
如果我理解正確的話,如果用戶的瀏覽器是Safari瀏覽器,或者如果沒有其他瀏覽器,則希望將圖像設置爲兩個事件。我認爲你應該驗證哪個瀏覽器有一些驗證,然後設置事件... – 2011-12-06 10:52:09