Click事件侦听器适用于OSX上的Safari,但不适用于iOS

时间:2012-12-27 11:54:41

标签: javascript ios macos safari click

我正在创建一个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>

为什么这在Safari的OSX版本中有效,但在iOS中无效?

4 个答案:

答案 0 :(得分:1)

此代码应该跨浏览器工作:

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);

答案 1 :(得分:1)

尝试将事件监听器“click”更改为“click touchstart”

答案 2 :(得分:0)

我找到了一个非常简单的解决方案。我在示例代码中添加了另一个关于div元素的div(参见上面的问题)。开头的div标签是

<div onClick="">

此div标签内的所有div现在都会触发click事件。这也适用于touchstart。

答案 3 :(得分:0)

就我而言,我只需要将 window 替换为 document

不适用于 iOS:

window.addEventListener('click', () => {})

iOS 兼容:

document.addEventListener('click', () => {})`