1.最近在開發微信公衆號網頁,發現在iOS中,input元素快速點擊的時候無法獲得焦點,雙擊或者觸摸屏幕的時候才能獲取焦點。安卓端沒有問題。一開始以爲是iOS微信瀏覽器的兼容問題。後來認真排查了下,發現是我在引入ant-mobile組件庫時,同時引入了faskclick.js導致的。下面是ant-mobile官網的介紹:
然後我去ant-mobile github上看了下,發現了這個(參考https://github.com/ant-design/ant-design-mobile/issues/576):
因此把fastclick去掉就行了。
2.在輸入框獲取焦點,調出鍵盤,頁面被頂上去。輸入完成後,點完成,鍵盤收起,但是頁面不會回彈。可以這麼解決:
isWeiXinAndIos() {
const ua = `${window.navigator.userAgent.toLowerCase()}`;
const isWeixin = /MicroMessenger/i.test(ua);
const isIos = /\(i[^;]+;( U;)? CPU.+Mac OS X/i.test(ua);
return isWeixin && isIos;
}
weChatInputBug() { // 解決微信鍵盤收起頁面不回彈的問題
let myFunction;
const isWXAndIos = this.isWeiXinAndIos();
if (isWXAndIos) {
document.body.addEventListener('focusin', () => {
clearTimeout(myFunction);
});
document.body.addEventListener('focusout', () => {
clearTimeout(myFunction);
myFunction = setTimeout(() => {
window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });
}, 200);
});
}
}