先上錯(cuò)誤信息:
Unable to preventDefault inside passive event listener due to target being treated as passive. See?https://www.chromestatus.com/...
一個(gè)簡(jiǎn)單的頁(yè)面只有這么段js
document.addEventListener('touchstart',function(event){? ? event.preventDefault();},false);
報(bào)的一個(gè)好錯(cuò)誤,真是日了狗了,一直這么寫的代碼,什么情況?
原來控轿,是新版chrome,給這個(gè)preventDefault返回了naive,不再是清除瀏覽器默認(rèn)行為了柄瑰。
那這怎么搞?
現(xiàn)在mdn上搜索一番:
event.cancelable 瀏覽器默認(rèn)行為是否可以被禁用
event.defaultPrevented 瀏覽器默認(rèn)行為是否已經(jīng)被禁用
好像mdn上的event.preventDefault()方法還沒更新到最新
那這就可以解決問題了剪况,如果event.cancelable=false教沾,是什么意思?不讓開發(fā)者主動(dòng)去禁用么译断?
但是event.defaultPrevented也是false授翻,這個(gè)又怎么說?明明是沒有清除默認(rèn)行為孙咪,卻又禁止清除默認(rèn)行為?疤啤!翎蹈!
好吧淮菠,我是一個(gè)渺小的開發(fā)者,我只能該自己的代碼:
document.addEventListener('touchstart', function(event) {// 判斷默認(rèn)行為是否可以被禁用if(event.cancelable) {// 判斷默認(rèn)行為是否已經(jīng)被禁用if(!event.defaultPrevented) {event.preventDefault();? ? ? ? }? ? }},false);
注冊(cè)處理函數(shù)時(shí)荤堪,用如下方式合陵,明確聲明為不是被動(dòng)的
window.addEventListener('touchmove',?fn,?{?passive:?false?})??
本人資歷尚淺枢赔,無法給各大社區(qū)提這個(gè)小意見
不過,這樣一來拥知,好像不用我們?cè)谑謩?dòng)清除默認(rèn)行為了