我有一些用Javascript编写的脚本,显示加载网站元素的进度。我把这个脚本放在index.html文件上,所以它只在主页上运行。它工作得非常好,但是现在当你登陆index.html时它会显示进度,当你从子页面回到主页时这是我的问题因为主页已经被缓存而且浪费时间。
我的问题是:如何在用户登陆页面时运行脚本,而不是从子页面返回时运行脚本?
答案 0 :(得分:4)
尝试cookies来控制何时/何时不执行Javascript。
答案 1 :(得分:1)
当用户第一次点击index.html时创建一个cookie。检查cookie并仅在未设置cookie的情况下运行脚本。
if(!isset($_COOKIE['something'])) {
// run your loading script;
setcookie('something','someValue');
}
在将任何输出发送到浏览器之前,请确保您拥有上述代码。
答案 2 :(得分:0)
除了cookies,您还可以使用document.referrer:
<script>
if(document.referrer &&
document.referrer.indexOf("yoursite.com") == -1)
{
// Page loading process script goes here.
}
</script>
答案 3 :(得分:-1)
<html>
<head>
..
</head>
<body onload="doStuff()">
...
<script type="text/javascript" language="JavaScript">
//<![CDATA[
function doStuff(){
//check condition
if (readCookie('checkFirstTime')!=null) return;
//otherwise set the flag && do your thing
createCookie('checkFirstTime','yep',1);
alert("Welcome home Yo!");
...
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
//]]>
</script>
...
</body>
</html>