我希望在加载页面后60秒运行JavaScript函数。 经过一番研究,我发现setTimeout()就是解决方案。
这就是我的所作所为:
<body onLoad="setTimeout(postAction('news.reads', 'article'), 60000);">
不知何故,setTimeout不起作用。加载页面后,无需等待60秒,因为postAction()会立即运行。
为什么会这样?怎么解决?那里有setTimeout()的替代品吗? 谢谢!
答案 0 :(得分:10)
您需要将postAction
包装在函数中以推迟执行:
setTimeout(function() { postAction('news.reads', 'article'); }, 60000);
您实际上是立即执行postAction
,您的代码相当于:
var result = postAction('news.reads', 'article');
setTimeout(result, 60000);
答案 1 :(得分:0)
您使用的是setTimeout
:
setTimeout(function(){alert("OK");}, 1000 * 60); // alert "OK" in 60s
答案 2 :(得分:0)
在JS中执行所需操作的正确方法,即在页面加载后设置超时:
(function(w)
{
var load = function()
{
setTimeout(postAction,60000);
if (w.removeEventListener)
{//remove listeners, to avoid leak...
return w.removeEventListener('load',load,false);
}
return w.attachEvent('onload',load);
};
if (w.addEventListener)
{
return w.addEventListener('load',load,false);
}
return w.attachEvent('onload',load);
}(this));
代替window.onload = function(){setTimeout(postAction,60000);};
,它也会起作用,但会导致IE中的内存泄漏<9。这仅仅是为了完整性&#39;为了
无论如何,这里的关键是setTimeout(postAction,60000);
更新
看到您正在使用的代码后,这是最简单的解决方法:
<body onLoad="setTimeout(function(){ return postAction('news.reads', 'article');}, 60000);">
答案 3 :(得分:-2)
<script>
function doSomeJavascript() {
// javascript code goes here
alert('5 secs is up!');
}
// calls function doSomeJavascript() 5 secs after page load
var interval = setInterval(doSomeJavascript, 5000);
setTimeout(function() {
window.clearInterval(interval);
}, 5000);
</script>