码迷,mamicode.com
首页 > 其他好文 > 详细

mobile_点透_传透

时间:2018-11-24 11:38:52      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:无效   als   事件监听   文字   技术   cto   字母   事件   default   

点透(传透)

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />

PC 事件 在移动端,会有 300 ms 的延迟。

技术分享图片

  • 点透现象:(面试题)
  • 轻轻触碰 box ,box 消失

当点击 非文字覆盖区域 时,盒子正常消失。

当点击 文字区域时,页面发生跳转。

 

  • 理想情况:

无论点击哪个区域,只要是点击盒子,盒子都消失,而不影响 a

 

  • 解决方案1:(面试阐述)

click    事件监听,PC 端的事件 在 移动端有 300 ms 的延迟

  • 解决方案2(模拟器测试无效, 移动端有效):

让 a 元素不能跳转,即取消浏览器的默认行为

  • document.addEventListener("touchstart", function(e){
        e.preventDefault();
    }, false);

② box 盒子消失,点击 a 元素,a 应该跳转,即给 a 元素指定一个全新的跳转动作

  • var aNodes = document.querySelector("a");
    
    for(var i=0; i<aNodes.length; i++){
        aNodes[i].addEventListener("touchstart", function(){
            // 获取 a 的跳转地址, 交给 window 实现跳转
            window.location.href = this.href;
        }, false);
    };
    /****    模拟器测试无效, 实际测试有效
        window.location 是一个只读对象,所有字母必须小写
        但是仍然可以赋予一个对象 DOMString
        两种写法,效果一致
        window.location = "https://www.baidu.com";
        window.location.href = "https://www.baidu.com";
     ****/

 

mobile_点透_传透

标签:无效   als   事件监听   文字   技术   cto   字母   事件   default   

原文地址:https://www.cnblogs.com/tianxiaxuange/p/10011088.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!