2012-12-27 20 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

相关问题