我今天刚刚找到一段代码,因为我需要刷新我的一个页面,以便PHP脚本可以再次运行以便每分钟都显示来自数据库的新结果。
if (document.images)
setTimeout('location.reload(true)',1000*60*15); // forces a reload from the server
else
setTimeout('location.href = location.href',1000*60*15); // just reloads the page
这两者有什么区别?我的意思是他们没有重新加载页面? JS代码如何强制从服务器重新加载?
全部谢谢
答案 0 :(得分:5)
如果页面上有图片,则代码段将尝试进行整页重新加载,否则只会将重定向发送到同一页面。
使用location.reload(true);
,true
参数会导致页面始终从服务器重新加载。
但是这个条件总是true
,因为document.images
是一个HTMLCollection,它永远不会评估为false
,即使页面上没有图像,唯一的值也是在布尔表达式中评估为false
的是null
,undefined
,0
,NaN
,空字符串,当然还有false
。< / p>
如果您想使该条件有效,则应检查length
的{{1}}属性,document.images
属性为数字,这意味着它将评估为{{1} }仅当其值为length
时:
false
另请注意,我现在使用函数表达式而不是字符串作为0
的第一个参数,如果使用字符串,则代码将在运行时进行评估(相当于if (document.images.length) {
setTimeout(function () {
location.reload(true); // forces a reload from the server
}, 1000*60*15);
} else {
setTimeout(function () {
location.href = location.href;
}, 1000*60*15); // just reloads the page
}
调用)和这并不是一个好的做法。
答案 1 :(得分:3)
我认为location.reload(true)将强制从服务器重新加载页面,第二个示例将重新加载页面,但如果它存在(并且可能存在),它将访问浏览器缓存。
这里有关于location.reload()方法http://www.devguru.com/Technologies/Ecmascript/Quickref/reload.html
的更多信息