微信内置浏览器打开网页有时JS无法执行问题解决方案

飘逸的风6年前 (2020-04-23)前端6318


苹果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


相关文章

JS对cookie的操作

1、设置cookie 01 function addCookie(objName, objValue, objHours) { //添加cookie 02...

jquery 事件方法总结

Dom: Attribute:属性 $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img").attr({src:"test.jpg",title:"te...

jQuery下拉框美化插件DropKick

jQuery下拉框美化插件DropKick

DropKick 是一个下拉框美化插件,使用非常简单,直接为下拉框 select 调用方法即可,瞬间让你摆脱繁琐。DropKick 有 3 种主题,你可以选择一种与你的页面更加搭配的,当然你也可以自己...

jQuery自适应宽度导航插件Horizo​​ntalNav

jQuery自适应宽度导航插件Horizo​​ntalNav

Horizo​​ntalNav 是一个 jQuery 导航插件,能够自适应容器的宽度。如果你曾经在一个项目中创建过这种效果,你就会知道,这是很难处理的。但这个插件很容易,并且支持 IE6、IE7。...

jQuery操作Select的方法集合

jQuery获取Select选择的Text和Value:  语法解释:  1. $("#select_id").change(function(){/...

js控制在网页中禁用右键和禁止另存为的代码

禁止网页右击,选择,最简单的两句代码: <script type="text/javascript"> <!-- document.oncontextmenu=n...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。