zoukankan      html  css  js  c++  java
  • 移动端点击问题

    IOS safari 点击失效详解

    出现情况: 使用 zepto 或 jQuery 的情况下,给一个元素添加click事件,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件在IOS safari中会失效。

    案例如下:

    <!DOCTYPE html>
    <html>
    <head>
        <title>ios click test</title>
    </head>
    <body>
        <div id="main">
            <div id="text">test test</br>test test</br>test test</br></div>
            <a id="link">this is a link</a>
            <button id="btn">hello world</button>
            <input type="text" name="name" id="name" placeholder="click input"/>
        </div>
        <script type="text/javascript" src="./deps/zepto.js"></script>
        <script type="text/javascript">
            $(document).on('click', '#text', function() {
                alert('text');      //IOS中点击失效
            }).on('click', '#link', function() {
                alert('link');      //IOS中点击有效
            }).on('click', '#btn', function() {
                alert('btn');      //IOS中点击有效
            }).on('click', '#name', function() {
                alert('input');    //IOS中点击有效
            });
        </script>
    </body>
    </html>

    解决方案

    1. 将 click 事件直接绑定到目标​元素(​​即 target)上。
    2. 将目标​元素换成 &lt; a> 或者 button 等可点击的元素。
    3. 将 click 事件委托到非 document 或 body 的父级元素上。
    4. 给目标元素加一条样式规则 cursor: pointer
    5. 使用原生方式委托事件。

    touchstart事件阻止默认事件会导致click不响应

    案例如下:

    有父子两个元素,父元素Father,子元素Child。

    Vue中为子元素绑定了click事件,但是在ipad上从来没有进入其处理函数。

    父元素通过addEventListener绑定事件

    document.getElementById('Father').addEventListener('touchstart', handleFather);

    子元素通过Vue的@click绑定

    <div id="Child" @click="handleChild">

    每次点击首先响应父元素的事件(事件顺序以及click延时导致),进入handleFather处理函数,函数中设置了e.preventDefault()。那么将导致后面的click事件不会触发。

  • 相关阅读:
    Asp.Net WebService 使用后来管理系统对接口方法进行公开控制
    ASP.NET使用NPOI加载Excel模板并导出下载
    VS2010 根据模型生成数据库 打开edmx.sql文件时 vs出现无响应的解决方案
    ASP.NET中Session简单原理图
    三层架构学习总结图
    备忘录
    帶編號漏洞列表
    pwn with glibc heap(堆利用手册)
    基于qemu和unicorn的Fuzz技术分析
    winafl 源码分析
  • 原文地址:https://www.cnblogs.com/chuaWeb/p/mobile-click.html
Copyright © 2011-2022 走看看