a. 微信嵌入視頻:
a.1 視頻元素播放時層級默認被頂置
a.1 視頻播放后窗口無法通過css改變層級
a.2 視頻播放后窗口無法通過css隱藏
解決方案:做個假的播放窗口,點擊播放窗口(假的)后彈窗進行播放,關閉彈窗時刪除真正的視頻元素
b. 微信錄音:
a.1 開啟wx.startRecord()接口后touchend事件無法觸發(touchstart->touchcancel, 我也不知道為什么,就是這么奇葩)
a.2 某些機型錄音超時不會onVoiceRecordEnd方法
a.3 iphone的語音不兼容android
解決方案:
a.1 沒有太完美的解決方案!按住錄音是暫時無法實現的了,只能通過點擊事件來實現錄音功能了(例如:點擊開啟錄音按鈕(開始錄音)->點擊結束錄音按鈕(結束且生成錄音))
a.2 通過設置定時器來監聽錄音是否超過60s
a.3 通過后台轉碼成MP3
c. 頁面緩存:
a.1 當你快速重復的點擊微信公眾號的一個鏈接時,有時會出現跳轉失敗問題(頁面無法跳轉,微信頁面緩存與跳轉指向出現了問題)
解決方案:每個跳轉鏈接加上時間戳參數
d. 微信滑動:
a.1 微信下滑版本提示會使頁面滑動變得卡頓不流暢
解決方案:
document.addEventListener('touchmove',function(e){ e.stopPropagation(); },false)
e. 部分安卓系統不支持Object.assign方法:
e.1 自己寫一個對象合並方法
解決方案:
function assignObject(o, n) { for (var p in n) { if (n.hasOwnProperty(p) && (!o.hasOwnProperty(p))) o[p] = n[p]; } }
f. ios上傳圖片無法預覽,ios新版系統微信瀏覽器使用了WKwebview內核,因為安全問題不能直接使用localId預覽圖片
f.1 可以通過wx.getLocalImgData()獲取base64字符串預覽圖片,但是android得到的base64字符有偏差,少了圖片類型頭標識
f.2 最終方法:ios系統使用wx.getLocalImgData()獲取base64字符串實現圖片預覽,如果base64字符不帶圖片類型標識則使用localId實現圖片預覽
解決方案:
wx.checkJsApi({ jsApiList: ['getLocalImgData'], // 需要檢測的JS接口列表,所有JS接口列表見附錄2, success: function(res) { // 以鍵值對的形式返回,可用的api值true,不可用為false // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"} if (res.checkResult.getLocalImgData) { wx.getLocalImgData({ localId: localId, // 圖片的localID success: function(res) { var localData = res.localData; // localData是圖片的base64數據,可以用img標簽顯示 if (localData.indexOf('data:image') == -1) { localData = localId; } showImageContainer.find("img").prop('src', localData); //放入圖片 } }); } else { showImageContainer.find("img").prop('src', localId); //放入圖片 } } });
g. 服務器使用https協議時,外鏈也需要使用https協議,否則ios系統不支持(android是支持的)
解決方法: 把外鏈的http協議轉換成https協議(外鏈需要支持https協議)
H. wx.uploadImage不支持一次上傳多張圖片
解決方法:上傳一張后再上傳第二張......
I. ios系統vue單頁面應用wx.config簽名失敗與jssdk分享接口配置無效
安卓系統單頁面應用history模式下,切換路由需要使用當前的url重新生成配置信息(驗證簽名)重新調用wx.config接口。而ios系統則不需要,使用頁面初始化的url生成配置信息wx.config只調用一次即可。