copy dari repo om Irfan
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
/*! Idle Timer - v0.9.2 - 2013-08-04
|
||||
* https://github.com/mikesherov/jquery-idletimer
|
||||
* Copyright (c) 2013 Paul Irish; Licensed MIT */
|
||||
( function( $ ) {
|
||||
|
||||
$.idleTimer = function( firstParam, elem, opts ) {
|
||||
|
||||
// defaults that are to be stored as instance props on the elem
|
||||
opts = $.extend( {
|
||||
startImmediately: true, //starts a timeout as soon as the timer is set up
|
||||
idle: false, //indicates if the user is idle
|
||||
enabled: true, //indicates if the idle timer is enabled
|
||||
timeout: 30000, //the amount of time (ms) before the user is considered idle
|
||||
events: "mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove" // activity is one of these events
|
||||
}, opts );
|
||||
|
||||
|
||||
elem = elem || document;
|
||||
|
||||
var jqElem = $( elem ),
|
||||
obj = jqElem.data("idleTimerObj") || {},
|
||||
|
||||
/* (intentionally not documented)
|
||||
* Toggles the idle state and fires an appropriate event.
|
||||
* @return {void}
|
||||
*/
|
||||
toggleIdleState = function( myelem ) {
|
||||
|
||||
// curse you, mozilla setTimeout lateness bug!
|
||||
if ( typeof myelem === "number" ) {
|
||||
myelem = undefined;
|
||||
}
|
||||
|
||||
var obj = $.data( myelem || elem, "idleTimerObj" );
|
||||
|
||||
//toggle the state
|
||||
obj.idle = !obj.idle;
|
||||
|
||||
// reset timeout
|
||||
var elapsed = ( +new Date() ) - obj.olddate;
|
||||
obj.olddate = +new Date();
|
||||
|
||||
// handle Chrome always triggering idle after js alert or comfirm popup
|
||||
if ( obj.idle && ( elapsed < opts.timeout ) ) {
|
||||
obj.idle = false;
|
||||
clearTimeout( $.idleTimer.tId );
|
||||
if ( opts.enabled ) {
|
||||
$.idleTimer.tId = setTimeout( toggleIdleState, opts.timeout );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// create a custom event, but first, store the new state on the element
|
||||
// and then append that string to a namespace
|
||||
var event = $.Event( $.data( elem, "idleTimer", obj.idle ? "idle" : "active" ) + ".idleTimer" );
|
||||
$( elem ).trigger( event );
|
||||
},
|
||||
|
||||
/**
|
||||
* Stops the idle timer. This removes appropriate event handlers
|
||||
* and cancels any pending timeouts.
|
||||
* @return {void}
|
||||
* @method stop
|
||||
* @static
|
||||
*/
|
||||
stop = function( jqElem ) {
|
||||
|
||||
var obj = jqElem.data("idleTimerObj") || {};
|
||||
|
||||
//set to disabled
|
||||
obj.enabled = false;
|
||||
|
||||
//clear any pending timeouts
|
||||
clearTimeout( obj.tId );
|
||||
|
||||
//detach the event handlers
|
||||
jqElem.off(".idleTimer");
|
||||
};
|
||||
|
||||
obj.olddate = obj.olddate || +new Date();
|
||||
|
||||
if ( typeof firstParam === "number" ) {
|
||||
opts.timeout = firstParam;
|
||||
} else if ( firstParam === "destroy" ) {
|
||||
stop( jqElem );
|
||||
return this;
|
||||
} else if ( firstParam === "getElapsedTime" ) {
|
||||
return ( +new Date() ) - obj.olddate;
|
||||
}
|
||||
|
||||
|
||||
/* (intentionally not documented)
|
||||
* Handles a user event indicating that the user isn't idle.
|
||||
* @param {Event} event A DOM2-normalized event object.
|
||||
* @return {void}
|
||||
*/
|
||||
jqElem.on( $.trim( ( opts.events + " " ).split(" ").join(".idleTimer ") ), function() {
|
||||
var obj = $.data( this, "idleTimerObj" );
|
||||
|
||||
//clear any existing timeout
|
||||
clearTimeout( obj.tId );
|
||||
|
||||
//if the idle timer is enabled
|
||||
if ( obj.enabled ){
|
||||
//if it's idle, that means the user is no longer idle
|
||||
if ( obj.idle ){
|
||||
toggleIdleState( this );
|
||||
}
|
||||
|
||||
//set a new timeout
|
||||
obj.tId = setTimeout( toggleIdleState, obj.timeout );
|
||||
}
|
||||
});
|
||||
|
||||
obj.idle = opts.idle;
|
||||
obj.enabled = opts.enabled;
|
||||
obj.timeout = opts.timeout;
|
||||
|
||||
//set a timeout to toggle state. May wish to omit this in some situations
|
||||
if ( opts.startImmediately ) {
|
||||
obj.tId = setTimeout( toggleIdleState, obj.timeout );
|
||||
}
|
||||
|
||||
// assume the user is active for the first x seconds.
|
||||
jqElem.data( "idleTimer", "active" );
|
||||
|
||||
// store our instance on the object
|
||||
jqElem.data( "idleTimerObj", obj );
|
||||
};
|
||||
|
||||
$.fn.idleTimer = function( firstParam, opts ) {
|
||||
// Allow omission of opts for backward compatibility
|
||||
if ( !opts ) {
|
||||
opts = {};
|
||||
}
|
||||
|
||||
if ( this[0] ){
|
||||
return $.idleTimer( firstParam, this[0], opts );
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
})( jQuery );
|
||||
Reference in New Issue
Block a user