方案一: 网上方法大多就只有 window.scrollTo(0, 0) ,会形成 input 失去焦点时就滚动到顶部了,这是不对的,并非全部状况都要回顶部,因而本身写了个适用所有场景的解决方案,而且添加后,全部文件生效~
(/iphone|ipod|ipad/i.test(navigator.appVersion)) && document.addEventListener(
'blur',
event => {
// 当页面没出现滚动条时才执行,由于有滚动条时,不会出现这问题
// input textarea 标签才执行,由于 a 等标签也会触发 blur 事件
if (
document.documentElement.offsetHeight <=
document.documentElement.clientHeight &&
['input', 'textarea'].includes(event.target.localName)
) {
document.body.scrollIntoView() // 回顶部
}
},
true
)
方案二: focusout 含有事件冒泡 blur没有事件冒泡,
特别是对input外面在包含有div时,建议监听focusout事件
export function isMobile() {
const ua = navigator.userAgent;
return /Android|webOS|iPhone|iPod|iPad|Macintosh|BlackBerry/i.test(ua);
}
export function isIos() {
const ua = navigator.userAgent;
return /iPhone|iPod|iPad|Macintosh/i.test(ua);
}
if (isIos()) {
document.body.addEventListener('focusout', () => {
var scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;
window.scrollTo(0, Math.max(scrollHeight - 1, 0));
});
}
在和客户端交互,通常都会处理成JSON字符串,若是此对象里面包含了JOSN字符串时,在处理成JSON字符串,在传输给H5 时,前端拿到解析JSON 就会出错,浏览器,会在传输过程当中,去掉一些转译\符号,
解决方法,若是是多层嵌套JSON ,那么就客户端就处理转译JSON几回。