微信内置浏览器打开网页有时JS无法执行问题解决方案
苹果IOS微信内置浏览器打开网页,有时不会执行JS脚本,android安卓手机微信浏览器偶尔也有这样的问题,经过多次调试,发现是微信浏览器缓存了渲染页面,没有重新渲染页面,导致window.onload中JS无法执行。
经过以上分析判断,给出的解决方案就是,如果使用了缓存,自动重载页面。以下是JS代码解决方案:
window.onpageshow = function(event) { if (event.persisted) { window.location.reload(); } };
或者下方代码:
var isPageHide = false; window.addEventListener('pageshow', function () { if (isPageHide) { window.location.reload(); } }); window.addEventListener('pagehide', function () { isPageHide = true; });
html头部处理缓存信息:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="0" />扩展说明:
pageshow:
当一条会话历史记录被执行的时候将会触发页面显示(pageshow)事件。(这包括了后退/前进按钮操作,同时也会在onload 事件触发后初始化页面时触发)
详见:https://developer.mozilla.org/zh-CN/docs/Web/Events/pageshow