我放弃了。这似乎是微不足道的,但在我尝试的任何浏览器中始终不起作用(IE8,Firefox 17)。我可以证明javascript已启用并在其他使用它的页面上正常工作,但在4秒后,这总是表现为javascript被禁用,并重定向到“nojava.html”页面。为什么呢?
<html>
<head>
<meta http-equiv="refresh" content="4;url=nojava.html">
<title>Test Page</title>
<script language="JavaScript">
function CheckJava() {
timerID = setTimeout("after3sec", 3000);
}
function after3sec() {
window.location="intro1.html";
}
</script>
</head>
<body onload="CheckJava()">
<p>Test text</p>
</body>
</html>
我完全希望得到答案的尴尬......
答案 0 :(得分:3)
微妙的错误是,如果您将字符串传递给setTimeout
,它会将字符串评估为JavaScript代码。现在,
after3sec
是有效的JS代码,但它只返回对名为after3sec
的函数的引用(然后丢弃它,因为你没有对它做任何事情)而不是实际调用功能。
要解决此问题,只需在函数名称后附加一对括号:
setTimeout( "after3sec()", 3000 );
或者,更好的是,按照gdoron的建议,直接将函数引用传递给setTimeout
:
setTimeout( after3sec, 3000 );
事实上,你甚至可以在不使用单独的功能的情况下完成它:
function CheckJava() {
timerID = setTimeout( function () {
window.location = "intro1.html";
}, 3000 );
}
或者,使用拉丝风格:
function CheckJava() {
timerID = setTimeout( 'window.location = "intro1.html";', 3000 );
}
答案 1 :(得分:2)
请勿在{{1}}之前使用字符串并在使用之前定义该功能 改为:
setTimeout
BTW有很多更好的方法可以检查是否启用了javascript,例如function after3sec() {
window.location="intro1.html";
}
function CheckJava() {
timerID = setTimeout(after3sec, 3000);
}
。