用户可见时自动刷新页面

时间:2012-09-17 10:03:02

标签: jquery asp.net-mvc asp.net-mvc-3

到目前为止,我们要求每当用户在页面上处于活动状态时,我们需要自动刷新此页面。用户在另一个窗口上最小化/激活时,我们需要停止自动刷新。

用户提出了新的要求。只要用户可以看到页面,我们就需要自动刷新页面。这就像我已经水平/垂直设置2个窗口,这样我就可以在一个窗口上工作,并可以查看另一个窗口。我怎样才能实现这个功能?

提前致谢。

2 个答案:

答案 0 :(得分:0)

请看一下这个答案:JavaScript / jQuery: Test if window has focus,了解确定窗口是否具有焦点的方法。

在上面示例的setInterval部分中,您可以添加代码来刷新页面。

您可以添加对

的调用
location.reload();

用于刷新页面

答案 1 :(得分:0)

尝试这样的方法来检测可见性:

var state='';



    (function() {
        var hidden, change, vis = {
                hidden: "visibilitychange",
                mozHidden: "mozvisibilitychange",
                webkitHidden: "webkitvisibilitychange",
                msHidden: "msvisibilitychange",
                oHidden: "ovisibilitychange" /* not currently supported */
            };             
        for (hidden in vis) {
            if (vis.hasOwnProperty(hidden) && hidden in document) {
                change = vis[hidden];
                break;
            }
        }
        if (change)//this is for detecting without  focus, so it works for your second requirement
            document.addEventListener(change, onchange);
        else if (/*@cc_on!@*/false) // IE 9 and lower
            document.onfocusin = document.onfocusout = onchange
        else
            window.onfocus = window.onblur = onchange;

        function onchange (evt) {
            var body = document.body;
            evt = evt || window.event;

            if (evt.type == "focus" || evt.type == "focusin")
           {   
        body.className = "visible";
           state='visible';
            }         else if (evt.type == "blur" || evt.type == "focusout")
            {  body.className = "hidden";     state='';}
                else    {    
                body.className = this[hidden] ? "hidden" : "visible";}
        }

    })();


function timeout_trigger() {
if(state=='visible')
{
//    window.open('PAGE','_SELF'); OR some ajax  
}
}


    setTimeout('timeout_trigger()', 30000);
IE 9及更低版本需要

onfocusin和onfocusout,而所有其他人都使用onfocus和onblur。