在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  HTML/ 微信瀏覽器里面圖片添加tap事件 進(jìn)行跳轉(zhuǎn)的時(shí)候 圖片會(huì)被放大

微信瀏覽器里面圖片添加tap事件 進(jìn)行跳轉(zhuǎn)的時(shí)候 圖片會(huì)被放大

<div class="wrapper">
    <img src="/images/download/logo.png" class="logo">
    <img src="/images/download/appstore.png" class="appstore">
    <img src="/images/download/android.png" class="android">
</div>

$('.appstore').on("tap",function(){
    window.location.;
})


$('.android').on("tap",function(){
    window.location.;
})

微信瀏覽器里面打開頁(yè)面 點(diǎn)擊.appstore 與.android 的時(shí)候有時(shí)會(huì)放大這兩個(gè)圖片 然后才跳轉(zhuǎn)鏈接
我希望不要放大圖片 這要如何解決

回答
編輯回答
笑忘初

圖片上面加個(gè)透明的div

2018年2月15日 15:00
編輯回答
魚梓

樓上正解,我前幾天也遇到這個(gè)問(wèn)題了,就是這么解決的。

2017年9月17日 10:15
編輯回答
陪她鬧

直接綁touchstart事件不行么?

2017年8月5日 20:21
編輯回答
下墜

這兩周安卓端的微信瀏覽器內(nèi)核的bug(特性),表現(xiàn)為 點(diǎn)擊 圖片時(shí) 圖片會(huì)全屏放大,正常情況下,應(yīng)該要調(diào)用微信提供的jsSDK才會(huì)有這效果

解決辦法

阻止圖片的點(diǎn)擊事件的默認(rèn)行為,是的,在目前安卓微信里,點(diǎn)擊圖片會(huì)全屏放大已經(jīng)變成了它的默認(rèn)行為
我們可以寫一個(gè)事件代理來(lái)阻止:

$(document).on('click', 'img', e => {
    e.preventDefault();
})

算是個(gè)坑。

---------------------------以下5月2日更新------------------------------------------
上述的解決方案有一個(gè)坑:

<a >
 <img src="xxxx.png">
</a>

當(dāng)圖片被a標(biāo)簽包裹的時(shí)候,你會(huì)驚喜的發(fā)現(xiàn)點(diǎn)擊后a不能跳轉(zhuǎn)了,就好像a標(biāo)簽的瀏覽器默認(rèn)行為被阻止了一樣
其實(shí)還是上面寫法的坑,我們?yōu)榱四茏柚箘?dòng)態(tài)渲染的img元素用了事件代理,由document代理的,所以點(diǎn)擊的時(shí)候e.preventDefault()阻止的其實(shí)是document的默認(rèn)行為,document是網(wǎng)頁(yè)中的老大,它的默認(rèn)行為就相當(dāng)是瀏覽器的所有默認(rèn)行為了。。。所以a鏈接點(diǎn)了也不會(huì)跳轉(zhuǎn)

這里最終解決辦法呢有下面3種,視情況可搭配使用:

一. 不用a的href跳轉(zhuǎn),使用js跳轉(zhuǎn)(不推薦,像用戶使用富文本插入的html代碼就不行了)

二. 不用js,純使用css來(lái)阻止安卓微信的這一行為:

img {
    pointer-events: none;
}

不過(guò)這個(gè)也有它的副作用,使用后會(huì)讓直接綁定在img身上點(diǎn)擊事件失效,只能給img元素再包裹一層元素,把事件放到這個(gè)元素身上

三. 改進(jìn)下我們之前寫的事件代理:

// 遞歸搜索當(dāng)前元素所有父級(jí),看是否包含有a標(biāo)簽且有href值
const searchIsHavaTagA = function (currentEle) {
    // 如果一直往上層找,到body還沒找到就說(shuō)明沒有了
    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 {
        // 父級(jí)里有a標(biāo)簽且href不為空的,不處理
        if (!searchIsHavaTagA(e.target)) {
            e.preventDefault();
        }
    } catch (error) {
        console.log('阻止圖片默認(rèn)事件失敗');
    }
                        
})
2018年6月18日 10:33