mirror of
https://github.com/myvesta/vesta
synced 2025-07-11 07:36:47 -07:00
75 lines
1.8 KiB
JavaScript
75 lines
1.8 KiB
JavaScript
/**
|
|
* @author trixta
|
|
*/
|
|
(function($){
|
|
$.userMode = (function(){
|
|
var userBg,
|
|
timer,
|
|
testDiv,
|
|
boundEvents = 0;
|
|
|
|
function testBg(){
|
|
testDiv = testDiv || $('<div></div>').css({position: 'absolute', left: '-999em', top: '-999px', width: '0px', height: '0px'}).appendTo('body');
|
|
var black = $.curCSS( testDiv.css({backgroundColor: '#000000'})[0], 'backgroundColor', true),
|
|
white = $.curCSS( testDiv.css({backgroundColor: '#ffffff'})[0], 'backgroundColor', true),
|
|
newBgStatus = (black === white || white === 'transparent');
|
|
if(newBgStatus != userBg){
|
|
userBg = newBgStatus;
|
|
$.event.trigger('_internalusermode');
|
|
}
|
|
return userBg;
|
|
}
|
|
|
|
function init(){
|
|
testBg();
|
|
timer = setInterval(testBg, 3000);
|
|
}
|
|
|
|
function stop(){
|
|
clearInterval(timer);
|
|
testDiv.remove();
|
|
testDiv = null;
|
|
}
|
|
|
|
$.event.special.usermode = {
|
|
setup: function(){
|
|
(!boundEvents && init());
|
|
boundEvents++;
|
|
var jElem = $(this)
|
|
.bind('_internalusermode', $.event.special.usermode.handler);
|
|
//always trigger
|
|
setTimeout(function(){
|
|
jElem.triggerHandler('_internalusermode');
|
|
}, 1);
|
|
return true;
|
|
},
|
|
teardown: function(){
|
|
boundEvents--;
|
|
(!boundEvents && stop());
|
|
$(this).unbind('_internalusermode', $.event.special.usermode.handler);
|
|
return true;
|
|
},
|
|
handler: function(e){
|
|
e.type = 'usermode';
|
|
e.disabled = !userBg;
|
|
e.enabled = userBg;
|
|
return jQuery.event.handle.apply(this, arguments);
|
|
}
|
|
};
|
|
|
|
return {
|
|
get: testBg
|
|
};
|
|
|
|
})();
|
|
|
|
$.fn.userMode = function(fn){
|
|
return this[(fn) ? 'bind' : 'trigger']('usermode', fn);
|
|
};
|
|
|
|
$(function(){
|
|
$('html').userMode(function(e){
|
|
$('html')[e.enabled ? 'addClass' : 'removeClass']('hcm');
|
|
});
|
|
});
|
|
})(jQuery);
|