解决安卓网页在微信浏览器中点击图片会自动放大
使用的是微信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('阻止图片默认事件失败'); } })