我试图理解Zabiullah的这个剧本,我在" https://www.experts-exchange.com/questions/24623403/Can-a-Sharepoint-page-be-refreshed-automatically-but-just-once.html"中找到了这个剧本。他的帖子是从2009年开始的,从那以后他一直没有活跃,所以我在这里问。
此代码应仅在beginn处重新加载页面一次,并防止下次重新加载。代码工作得很好,但我不能理解if(arguments.length == 1)的Else条件何时被执行,因为funktion总是被setReloadTime(5)调用,这意味着它总是正确的? / p>
var reloadTimer = null;
var sURL = window.location.href;
function setReloadTime(secs) {
if (arguments.length == 1) {
if (reloadTimer)
clearTimeout(reloadTimer);
reloadTimer = setTimeout("setReloadTime()", Math.ceil(parseFloat(secs) * 1000));
} else {
if (sURL.indexOf("loaded=1") == -1) {
reloadTimer = null;
var queryString = location.search.substring(1);
sURL += (queryString ? "&" : "?") + 'loaded=1';
window.location = sURL;
} else {
clearTimeout(reloadTimer);
}
}
}
setReloadTime(5);
答案 0 :(得分:1)
我无法理解何时执行if(arguments.length == 1)的Else条件,因为funktion总是被setReloadTime(5)调用,这意味着它总是真的
不,代码设置一个计时器来运行它而不带任何参数:
reloadTimer = setTimeout("setReloadTime()", Math.ceil(parseFloat(secs) * 1000));
// Here -----------------^^^^^^^^^^^^^^^^^
这就是为什么它在第一次通话后需要分支。
那就是说,根据它是否有一个参数,让一个函数完成两个完全不同的事情是没有意义的。相反,该代码的原作者应该只编写两个函数。