-5

我有这个 jQuery 代码:

var vis = (function(){
    var stateKey, eventKey, keys = {
        hidden: "visibilitychange",
        webkitHidden: "webkitvisibilitychange",
        mozHidden: "mozvisibilitychange",
        msHidden: "msvisibilitychange"
    };
    for (stateKey in keys) {
        if (stateKey in document) {
            eventKey = keys[stateKey];
            break;
        }
    }
    return function(c) {
        if (c) document.addEventListener(eventKey, c);
        return !document[stateKey];
    }
})();

vis(function(){
  document.title = vis() ? 'Visible' : 'Not visible';
});

它现在所做的是更改页面的文档标题。如果页面不可见,它将更改为该页面,并且反之亦然。

我的问题是,我怎样才能像这样使用这个功能:

if page is visible{
 //do something
}
if page is not visible{
 //do something else
}
4

1 回答 1

0

vis()的函数在传递一个事件处理程序时绑定一个事件处理程序,否则返回状态。因此:

vis(function(event) {   
  if ( vis() ) {
    // visible   
  } else { 
   // not visible  
  } 
});

或者更详细地说:

var handler = function(){ 
  // calling vis() with no arguments will return a boolean
  if (vis()) {
    // visible
  } else {
    // not visible
  }
}

// if a handler is passed, it gets bound to the event
// thus, runs on *any* visibility state change
vis(handler);
于 2013-10-22T15:52:01.603 回答