方案一: 網上方法大多就只有 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幾回。