Blame | Letzte Änderung | Log anzeigen | RSS feed
/** jQuery idleTimer plugin* version 0.8.092209* by Paul Irish.* http://github.com/paulirish/yui-misc/tree/* MIT license* adapted from YUI idle timer by nzakas:* http://github.com/nzakas/yui-misc/* Copyright (c) 2009 Nicholas C. Zakas** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in* all copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN* THE SOFTWARE.*/(function($){$.idleTimer = function f(newTimeout){//$.idleTimer.tId = -1 //timeout IDvar idle = false, //indicates if the user is idleenabled = true, //indicates if the idle timer is enabledtimeout = 30000, //the amount of time (ms) before the user is considered idleevents = 'mousemove keydown DOMMouseScroll mousewheel mousedown', // activity is one of these events//f.olddate = undefined, // olddate used for getElapsedTime. stored on the function/* (intentionally not documented)* Toggles the idle state and fires an appropriate event.* @return {void}*/toggleIdleState = function(){//toggle the stateidle = !idle;// reset timeout counterf.olddate = +new Date;//fire appropriate event$(document).trigger( $.data(document,'idleTimer', idle ? "idle" : "active" ) + '.idleTimer');},/*** Stops the idle timer. This removes appropriate event handlers* and cancels any pending timeouts.* @return {void}* @method stop* @static*/stop = function(){//set to disabledenabled = false;//clear any pending timeoutsclearTimeout($.idleTimer.tId);//detach the event handlers$(document).unbind('.idleTimer');},/* (intentionally not documented)* Handles a user event indicating that the user isn't idle.* @param {Event} event A DOM2-normalized event object.* @return {void}*/handleUserEvent = function(){//clear any existing timeoutclearTimeout($.idleTimer.tId);//if the idle timer is enabledif (enabled){//if it's idle, that means the user is no longer idleif (idle){toggleIdleState();}//set a new timeout$.idleTimer.tId = setTimeout(toggleIdleState, timeout);}};/*** Starts the idle timer. This adds appropriate event handlers* and starts the first timeout.* @param {int} newTimeout (Optional) A new value for the timeout period in ms.* @return {void}* @method $.idleTimer* @static*/f.olddate = f.olddate || +new Date;//assign a new timeout if necessaryif (typeof newTimeout == "number"){timeout = newTimeout;} else if (newTimeout === 'destroy') {stop();return this;} else if (newTimeout === 'getElapsedTime'){return (+new Date) - f.olddate;}//assign appropriate event handlers$(document).bind($.trim((events+' ').split(' ').join('.idleTimer ')),handleUserEvent);//set a timeout to toggle state$.idleTimer.tId = setTimeout(toggleIdleState, timeout);// assume the user is active for the first x seconds.$.data(document,'idleTimer',"active");}; // end of $.idleTimer()})(jQuery);