0

これまで、ユーザーがページでアクティブになっているときはいつでも、このページの自動更新を行う必要があるなどの要件があります。ユーザーが別のウィンドウで最小化/アクティブ化するたびに、自動更新を停止する必要があります。

ユーザーは新しい要件を思いつきます。ユーザーに表示されるたびに、ページを自動更新する必要があります。1 つのウィンドウで作業し、別のウィンドウを確認できるように、水平/垂直に 2 つのウィンドウを設定したようなものです。この機能を実現するにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

0
于 2012-09-17T10:09:35.367 に答える
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 を使用します。

于 2012-09-17T10:24:49.640 に答える