6

我正在制作一个网络应用程序,我想单击一个元素并在一个长按事件处理程序中处理单击。我在 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>

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

4

4 回答 4

2

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

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);
于 2012-12-27T11:58:12.770 回答
1

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

于 2012-12-27T13:45:28.167 回答
0

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

<div onClick="">

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

于 2012-12-27T16:47:52.733 回答
0

就我而言,我只需要替换windowdocument

不适用于 iOS:

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

iOS 兼容:

document.addEventListener('click', () => {})`
于 2021-06-28T13:40:35.317 回答