【问题标题】:Click event listener works in Safari in OSX but not in iOS单击事件侦听器在 OSX 的 Safari 中有效,但在 iOS 中无效
【发布时间】:2012-12-27 11:54:40
【问题描述】:

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

【问题讨论】:

    标签: javascript ios macos safari click


    【解决方案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);
    

    【讨论】:

    • 我不需要跨平台的解决方案。我需要它在 Safari 中工作。如果我从您的代码中删除不适合 Safari 的所有内容并将其重写为不那么冗长,那么我得到的代码与我的原始代码完全相同,但这不起作用。你有什么不同的想法吗?
    【解决方案2】:

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

    【讨论】:

    • 我尝试用“click touchstart”替换“click”,但这完全破坏了代码。你确定这是正确的吗?
    • 我认为这个回复是在 jQuery 的上下文中。这可能会有所帮助:stackoverflow.com/questions/11845678/…
    • addEventListener 只接受单个事件,它不像 jQuery。
    【解决方案3】:

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

    <div onClick="">
    

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

    【讨论】:

      【解决方案4】:

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

      不适用于 iOS:

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

      iOS 兼容:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-19
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 2012-06-23
        • 2020-09-06
        相关资源
        最近更新 更多