Firefox中的Settimeout功能似乎不起作用

时间:2011-03-28 11:57:12

标签: javascript

有没有办法让以下工作?

function TimerEvent()
{

      TIMER_OBJ = setTimeout('Ajaxsessioncheck();', '<%=Timer%>');

}

我在onload事件中调用此函数,但是当Firefox中的时间已经过去时,它没有调用Ajaxsessioncheck函数。在IE和Chrome中,它可以正常工作。

感谢所有你的时间..我把代码更改为发送计时器作为整数现在我有一个不同的问题。在Ajaxsessioncheck()函数中,我将调用一个JSP页面,我没有在Firefox中获得响应。

3 个答案:

答案 0 :(得分:2)

您已将'<%=Timer%>'指定为字符串(由单引号表示),其中应为整数,如下所示:<%=Timer%>

您还应该将第一个参数指定为函数引用而不是字符串,因此您的最终输出将是:

setTimeout(Ajaxsessioncheck, <%=Timer%>);

答案 1 :(得分:1)

您不应该将第二个参数作为字符串传递。

   TIMER_OBJ = setTimeout('Ajaxsessioncheck();', <%=Timer%>);

应该可以正常工作。但为了更加正确,你还应该避免将第一个参数作为字符串传递,否则会被评估 - eval的隐藏执行发生,eval是邪恶的。因此,这就是你想要的:

   TIMER_OBJ = setTimeout(Ajaxsessioncheck, <%=Timer%>);

PS。在不使用关键字var的情况下声明变量会导致它泄漏到全局范围。我不确定你是否意识到这一点。

答案 2 :(得分:1)

'&LT;%=定时器%GT;'是一个字符串 - 它应该是一个 int ,以毫秒为单位。

几乎所有以X开头的问题在Y中都不起作用归结为浏览器实现的差异。相近 document.getElementById在firefox 中不起作用,并且该元素具有名称但没有ID。适用于IE但不适用于Fx