解决安卓网页在微信浏览器中点击图片会自动放大

使用的是微信Android客户端,使用img标签的src属性将图片设置好了以后,在微信中调试,点击图片竟然放大,自己 
没写放大图片的方法,也没有调用wx.previewImage()方法,最后查找,原来是微信Android客户端已经在底层支持了img标签自动放大的功能,说是bug还是改进?因为传统的浏览器是不带图片放大效果的,需要自己写方法,好了,明白了问题所在,解决就好了: 
传统方式: 

这个方式可能会把所有的默认的属性都屏蔽了,典型的就是a标签不能跳转 
$(document).on(‘click’, ‘img’, e => { 
e.preventDefault(); 
}) 

js阻止事件

<img src="a.png" onclick="return false" />

css方式: 
img{ 
pointer-events: none; 

这个会让img标签的点击事件失效,如果想要点击图片就要给上面再写一层 
Vue方式: 
v-on:click.prevent或者@click.prevent 
既能保证img标签的click,也能保证在微信中不自动放大,完美解决

 

 

另外一种方法

 

// 递归搜索当前元素所有父级,看是否包含有a标签且有href值
const searchIsHavaTagA = function (currentEle) {
    // 如果一直往上层找,到body还没找到就说明没有了
    if (currentEle.nodeName === 'BODY') {
        return false;
    }
    let parent = currentEle.parentElement;
    if (parent.nodeName === 'A' && parent.getAttribute('href')) {
        return true;
    } else {
        return searchIsHavaTagA(parent);
    }
}
$(document).on('click', 'img', function (e) {
    try {
        // 父级里有a标签且href不为空的,不处理
        if (!searchIsHavaTagA(e.target)) {
            e.preventDefault();
        }
    } catch (error) {
        console.log('阻止图片默认事件失败');
    }
                        
})

 

posted @ 2018-06-22 14:39  一个人的孤独自白  阅读(688)  评论(0编辑  收藏  举报