0

当会话到期时,我做了一个简单的页面移动到另一个页面。我已将时间设置为 50 秒,之后它将移动到页面但不幸的是它没有移动,我无助地知道哪里出了问题。如果您能解决我的问题,我将不胜感激

function x(){
       var timeOut =<%=session.getAttribute("login")%>;

var checkTimeout;

checkTimeOut = function(){
    if(timeOut==null || timeOut==""){
        window.location.replace("failedSession.jsp");
//document.getElementById("b").innerHTML="session timed out";
        // redirect to timeout page
    }else{


        window.setTimeout(checkTimeOut, 1000); // check once per second
    }}
checkTimeOut(); // this is where you insert checkTimeOut function so that when you call x(), this will execute in the end.
}
4

2 回答 2

0

您粘贴的代码最初似乎没有调用 checktimeout 函数。这也适用于您修改后的代码。它只是定义函数 checktimeout()。

我会在第一次调用 checktime out 的 body 标记中添加一个 onload 函数调用。

function startTimeoutCheck() {
    window.setTimeout(checkTimeout, 1000);
}

<body onload="startTimeoutCheck()">
    ....
</body>

checktimout 变量显然应该在上述函数的范围内(全局)。

于 2013-05-20T09:59:19.913 回答
0

您的代码的问题:

在您的代码中没有任何地方,您正在调用checkTimeOut();. 这就是为什么它没有被执行。您应该通过放入函数来检查函数的执行alert。可能会body onload按照@rgeorge建议进行。

注意:您的逻辑看起来不错。正如建议的那样,也有在javascript 语句后放置分号的习惯。@Mark

答案更新:

1)不要使用function namevariable名称相同。例如:x. 拥有独一无二的名字。这是矛盾的。

2)x总是大于lastActivity + timeOut因为x没有增加 (7 > 1+1)。这意味着else条件永远不会执行。这意味着checkTimeOut永远不会被调用。

3)你的函数checkTimeOut()本身永远不会执行,因为它永远不会从任何地方调用。你只是在执行x(). 这不足以调用checkTimeOut().

答案更新:

这样做:

<script type="text/javascript">
function x(){
       var timeOut =1;
var lastActivity = 1;
var x=7;

var checkTimeout;

checkTimeOut = function(){
    if(x > lastActivity + timeOut){
document.getElementById("b").innerHTML=x;
        // redirect to timeout page
    }else{
        window.setTimeout(checkTimeOut, 1000); // check once per second
    }}
checkTimeOut(); // this is where you insert checkTimeOut function so that when you call x(), this will execute in the end.
}

    </script>

你的代码对我来说很好。值DIV变为。7这就是您的代码所做的 >> http://jsfiddle.net/hmHP9/

于 2013-05-20T10:19:18.063 回答