Javascript 单击事件侦听器在OSX的Safari中工作,但在iOS中不工作
我正在制作一个web应用程序,我想单击一个元素并在一个长单击事件处理程序中处理单击。我在Safari进行测试。以下内容在Mac上的Safari中可以正常工作,但在iOS中不行:Javascript 单击事件侦听器在OSX的Safari中工作,但在iOS中不工作,javascript,ios,macos,safari,click,Javascript,Ios,Macos,Safari,Click,我正在制作一个web应用程序,我想单击一个元素并在一个长单击事件处理程序中处理单击。我在Safari进行测试。以下内容在Mac上的Safari中可以正常工作,但在iOS中不行: <html> <head> <script> window.addEventListener("click",function (event) { alert('hi'); });
<html>
<head>
<script>
window.addEventListener("click",function (event) {
alert('hi');
});
</script>
</head>
<body>
<div style="width: 100%; height: 100%; background: black;">
</div>
</body>
</html>
window.addEventListener(“单击”),函数(事件){
警报(“hi”);
});
为什么这在OSX版本的Safari中有效,而在iOS中无效?这段代码应该可以跨浏览器工作:
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);
尝试将事件侦听器“click”更改为“click touchstart”我发现了一个非常简单的解决方案。我在示例代码中添加了关于div元素的另一个div(参见上面的问题)。开始的div标记是
<div onClick="">
该div标记中的所有div现在都将触发click事件。这也适用于touchstart 我不需要跨平台的解决方案。我需要它在Safari工作。如果我从您的代码中删除了所有不适合Safari的内容,并将其重写为不那么冗长,那么我会得到与我的原始代码完全相同的代码,这是行不通的。你有什么不同的想法吗?我试着用“click touchstart”替换“click”,但这完全破坏了代码。你确定这是正确的吗?我认为这个回答是在jQuery的上下文中。这可能会有所帮助:addEventListener只接受一个事件,它不像jQuery那样工作。