2012-12-27 18 views
2

我正在製作一個Web應用程序,我想單擊一個元素並在一個長按事件處理程序中處理點擊。我正在Safari中測試。下面的作品在Safari罰款我的Mac上而不是在iOS設備上:單擊事件偵聽器在OSX中的Safari中工作,但在iOS中不工作

<html> 
    <head> 
     <script> 
      window.addEventListener("click",function (event) { 
       alert('hi'); 
      }); 
     </script> 
    </head> 
    <body> 
     <div style="width: 100%; height: 100%; background: black;"> 
     </div> 
    </body> 
</html> 

爲什麼這項工作在Safari的OSX版本,但不是在iOS的?

回答

0

我發現了一個很簡單的解決方案。我在我的示例代碼中添加了另一個div元素(請參閱上面的問題)。開放的div標籤是

<div onClick=""> 

此div標籤內的所有div現在將觸發click事件。這也適用於touchstart。

0

此代碼應工作的跨瀏覽器:

function Subscribe(event, element, func) { 
    if (element.addEventListener) { 
     element.addEventListener(event, func, false); 
    } else if (element.attachEvent) { 
     element.attachEvent("on" + event, func); 
    } else { 
     element['on' + event] = func; 
    } 
} 

function func() { 
    alert('hi'); 
} 

Subscribe('click', window, func); 
+0

我不需要跨平臺的解決方案。我需要它在Safari中工作。如果我從代碼中刪除了不適用於Safari的所有內容,並將其重寫爲較不詳細的內容,那麼我的內容與我的原始代碼完全相同,這是行不通的。你有什麼不同的想法? – Mark

1

嘗試改變事件監聽器「點擊」「點擊touchstart」

+0

我嘗試用「click touchstart」替換「click」,但是完全破壞了代碼。你確定這是正確的嗎? – Mark

+1

我認爲這個回覆是在jQuery的情況下。這可能有所幫助:http://stackoverflow.com/questions/11845678/adding-multiple-event-listeners-to-one-element – escapedcat

+0

addEventListener只接受一個事件,它不像jQuery一樣工作。 – LeBen

相關問題