Javascript 单击事件侦听器在OSX的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'); });

我正在制作一个web应用程序,我想单击一个元素并在一个长单击事件处理程序中处理单击。我在Safari进行测试。以下内容在Mac上的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>

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那样工作。