(function($) { $.fn.fullscreen = function(options) { var settings = $.extend({ to: false, exit: 'Normal size', onScreenChange: $.noop, onFail: $.noop },options); var methods = { run: function() { var selector = !settings.to ? this : $(this).find(settings.to); settings.full = selector[0].innerText; $(this).on('click',function() { if (!methods.is()) { if (methods.enter()) { selector[0].innerText = settings.exit; } else { settings.onFail(); } } else { selector[0].innerText = settings.full; return methods.exit(); } }); $(document).on('fullscreenchange mozfullscreenchange webkitfullscreenchange', function() { return settings.onScreenChange( methods.is() ); }) }, is : function() { return document.fullscreen || document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || false; }, enter : function() { if (document.documentElement.requestFullscreen) { document.documentElement.requestFullscreen(); return true; } else if (document.documentElement.mozRequestFullScreen) { document.documentElement.mozRequestFullScreen(); return true; } else if (document.documentElement.webkitRequestFullScreen) { document.documentElement.webkitRequestFullScreen(); return true; } else { return false; } }, exit : function() { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); } } }; return methods.run.call(this); } })(jQuery)