// container - 父容器,如 document.getElementById('profile')
// inputClassName - 可获得焦点的 input 元素类名,如 'input-box'
const blur = (container, inputClassName) => {
if (container.length) {
container = container[0]
}
const isIOS = /iPhone|iPad|iPod|IOS/i.test(window.navigator.userAgent)
container.addEventListener('touchend', (e) => {
const inputElems = document.getElementsByClassName(inputClassName)
const activeElem = document.activeElement
for (const elem of inputElems) {
if (e.target !== elem && elem === activeElem) {
// 解决 IOS 微信浏览器在文本框失去焦点时,页面不会回弹的问题
// https://blog.csdn.net/yanzhi_2016/article/details/84942569
if (isIOS && !elem.hasBlurHandler) {
elem.hasBlurHandler = true // 确保文本框只会监听一次 blur 事件
elem.addEventListener('blur', () => {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
window.scrollTo(0, scrollTop + 1) // 页面向下滚动
})
}
elem.blur()
break
}
}
})
}
console