摘要:調(diào)試結(jié)果看了一下錯(cuò)誤提示,發(fā)現(xiàn)手機(jī)瀏覽器只允許用戶操作打開,換句話說不管你最終是哪個(gè)函數(shù)執(zhí)行了,你的調(diào)用棧上溯到最開始一定是一個(gè)元素的事件回調(diào)。
問題描述
最近在開發(fā)一個(gè)視頻播放器項(xiàng)目,需要隱藏 video 標(biāo)簽,使用 canvas 自己做渲染。結(jié)果在點(diǎn)按鈕播放視頻的時(shí)候發(fā)現(xiàn) zepto touch 模塊不能用了。
調(diào)試結(jié)果看了一下錯(cuò)誤提示,發(fā)現(xiàn)手機(jī)瀏覽器只允許用戶操作打開 video,換句話說不管你最終是哪個(gè)函數(shù)執(zhí)行了 video.play(),你的調(diào)用棧上溯到最開始一定是一個(gè) DOM 元素的 UI 事件回調(diào)。
但是zepto touch 模塊是這么封裝 tap 事件的:
tapTimeout = setTimeout(function() { // trigger universal "tap" with the option to cancelTouch() // (cancelTouch cancels processing of single vs double taps for faster "tap" response) var event = $.Event("tap") event.cancelTouch = cancelAll // [by paper] fix -> "TypeError: "undefined" is not an object (evaluating "touch.el.trigger"), when double tap if (touch.el) touch.el.trigger(event) // trigger double tap immediately if (touch.isDoubleTap) { if (touch.el) touch.el.trigger("doubleTap") touch = {} } // trigger single tap after 250ms of inactivity else { touchTimeout = setTimeout(function(){ touchTimeout = null if (touch.el) touch.el.trigger("singleTap") touch = {} }, 250) } }, 0)
使用 setTimeout 異步執(zhí)行函數(shù),導(dǎo)致調(diào)用棧被清空了,系統(tǒng)判斷的時(shí)候自然不會認(rèn)為是用戶操作導(dǎo)致的 video.play()。
修改方案那么比較粗暴的解決方法就是修改 zepto 代碼,把 tap 事件的激發(fā)動(dòng)作從異步回調(diào)中移出來同步執(zhí)行,具體的說就是這三行:
var event = $.Event("tap") event.cancelTouch = cancelAll if (touch.el) touch.el.trigger(event)
因?yàn)?tap 事件是沒有什么延時(shí)的,所以直接移出來不會有什么影響,如果是延時(shí)事件就很尷尬了,暫時(shí)還想不出來什么解決方法。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/80522.html
摘要:隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)已經(jīng)逐漸成為互聯(lián)網(wǎng)的主要入口,隨之而來的是前端在移動(dòng)開發(fā)上面臨的各種機(jī)遇與挑戰(zhàn),本文就一些常見移動(dòng)端問題對移動(dòng)開發(fā)需要注意的事項(xiàng)進(jìn)行一下總結(jié),必然不可能涉及方方面面,但會隨著筆者的積累持續(xù)更新。 隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)Web已經(jīng)逐漸成為互聯(lián)網(wǎng)的主要入口,隨之而來的是前端在移動(dòng)Web開發(fā)上面臨的各種機(jī)遇與挑戰(zhàn),本文就一些常見移動(dòng)端問題對移動(dòng)Web開發(fā)需要注意...
摘要:隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)已經(jīng)逐漸成為互聯(lián)網(wǎng)的主要入口,隨之而來的是前端在移動(dòng)開發(fā)上面臨的各種機(jī)遇與挑戰(zhàn),本文就一些常見移動(dòng)端問題對移動(dòng)開發(fā)需要注意的事項(xiàng)進(jìn)行一下總結(jié),必然不可能涉及方方面面,但會隨著筆者的積累持續(xù)更新。 隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)Web已經(jīng)逐漸成為互聯(lián)網(wǎng)的主要入口,隨之而來的是前端在移動(dòng)Web開發(fā)上面臨的各種機(jī)遇與挑戰(zhàn),本文就一些常見移動(dòng)端問題對移動(dòng)Web開發(fā)需要注意...
摘要:基礎(chǔ)知識頁面窗口自動(dòng)調(diào)整到設(shè)備寬度,并禁止用戶縮放頁面忽略將頁面中的數(shù)字識別為電話號碼忽略平臺中對郵箱地址的識別當(dāng)網(wǎng)站添加到主屏幕快速啟動(dòng)方式,可隱藏地址欄,僅針對的版本以后,上已看不到效果將網(wǎng)站添加到主屏幕快 meta基礎(chǔ)知識H5頁面窗口自動(dòng)調(diào)整到設(shè)備寬度,并禁止用戶縮放頁面 忽略將頁面中的數(shù)字識別為電話號碼 忽略Android平臺中對郵箱地址的識別 當(dāng)網(wǎng)站添加到主屏幕快...
摘要:基礎(chǔ)知識頁面窗口自動(dòng)調(diào)整到設(shè)備寬度,并禁止用戶縮放頁面忽略將頁面中的數(shù)字識別為電話號碼忽略平臺中對郵箱地址的識別當(dāng)網(wǎng)站添加到主屏幕快速啟動(dòng)方式,可隱藏地址欄,僅針對的版本以后,上已看不到效果將網(wǎng)站添加到主屏幕快 meta基礎(chǔ)知識H5頁面窗口自動(dòng)調(diào)整到設(shè)備寬度,并禁止用戶縮放頁面 忽略將頁面中的數(shù)字識別為電話號碼 忽略Android平臺中對郵箱地址的識別 當(dāng)網(wǎng)站添加到主屏幕快...
閱讀 2947·2021-09-23 11:32
閱讀 2918·2021-09-22 15:12
閱讀 1708·2019-08-30 14:07
閱讀 3448·2019-08-29 16:59
閱讀 1640·2019-08-29 11:11
閱讀 2307·2019-08-26 13:50
閱讀 2426·2019-08-26 13:49
閱讀 2621·2019-08-26 11:49