低版本的ios不會(huì)出現(xiàn)這種問題,可能是由于ios11出現(xiàn)的問題,解決方法如下,在main.js入口文件里加入
FastClick.prototype.focus = function(targetElement) {
? ? var length;
? ? //兼容處理:在iOS7中忿晕,有一些元素(如date、datetime银受、month等)在setSelectionRange會(huì)出現(xiàn)TypeError
? ? //這是因?yàn)檫@些元素并沒有selectionStart和selectionEnd的整型數(shù)字屬性践盼,所以一旦引用就會(huì)報(bào)錯(cuò),因此排除這些屬性才使用setSelectionRange方法
? ? if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month' && targetElement.type !== 'email') {
? ? ? ? length = targetElement.value.length;
? ? ? ? targetElement.setSelectionRange(length, length);
? ? ? ? /*修復(fù)bug ios 11.3不彈出鍵盤宾巍,這里加上聚焦代碼咕幻,讓其強(qiáng)制聚焦彈出鍵盤*/
? ? ? ? targetElement.focus();
? ? } else {
? ? ? ? targetElement.focus();
? ? }
};
另外監(jiān)聽鍵盤彈起的方法:
Vue.directive('resetPage', {
? inserted: function (el) {
? ? // 監(jiān)聽鍵盤收起事件
? ? document.body.addEventListener('focusout', () => {
? ? ? if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
? ? ? ? //軟鍵盤收起的事件處理
? ? ? ? setTimeout(() => {
? ? ? ? ? const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0
? ? ? ? ? window.scrollTo(0, Math.max(scrollHeight - 1, 0))
? ? ? ? }, 100)
? ? ? }
? ? })
? }
})
在input里添加?v-reset-page
<input v-reset-page type="text" value=""/>