fullscreen.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. var Emitter = require('./Emitter');
  2. var toBool = require('./toBool');
  3. var fnMap = [
  4. [
  5. 'requestFullscreen',
  6. 'exitFullscreen',
  7. 'fullscreenElement',
  8. 'fullscreenEnabled',
  9. 'fullscreenchange',
  10. 'fullscreenerror'
  11. ],
  12. [
  13. 'webkitRequestFullscreen',
  14. 'webkitExitFullscreen',
  15. 'webkitFullscreenElement',
  16. 'webkitFullscreenEnabled',
  17. 'webkitfullscreenchange',
  18. 'webkitfullscreenerror'
  19. ],
  20. [
  21. 'mozRequestFullScreen',
  22. 'mozCancelFullScreen',
  23. 'mozFullScreenElement',
  24. 'mozFullScreenEnabled',
  25. 'mozfullscreenchange',
  26. 'mozfullscreenerror'
  27. ],
  28. [
  29. 'msRequestFullscreen',
  30. 'msExitFullscreen',
  31. 'msFullscreenElement',
  32. 'msFullscreenEnabled',
  33. 'MSFullscreenChange',
  34. 'MSFullscreenError'
  35. ]
  36. ];
  37. var fn;
  38. for (var i = 0, len = fnMap.length; i < len; i++) {
  39. fn = fnMap[i];
  40. if (fn[1] in document) {
  41. break;
  42. }
  43. }
  44. exports = {
  45. request: function() {
  46. var el =
  47. arguments.length > 0 && arguments[0] !== undefined
  48. ? arguments[0]
  49. : document.documentElement;
  50. el[fn[0]]();
  51. },
  52. exit: function() {
  53. document[fn[1]]();
  54. },
  55. toggle: function() {
  56. var el =
  57. arguments.length > 0 && arguments[0] !== undefined
  58. ? arguments[0]
  59. : document.documentElement;
  60. this.isActive() ? this.exit() : this.request(el);
  61. },
  62. isActive: function() {
  63. return toBool(this.getEl());
  64. },
  65. isEnabled: function() {
  66. return toBool(document[fn[3]]);
  67. },
  68. getEl: function() {
  69. return document[fn[2]];
  70. }
  71. };
  72. Emitter.mixin(exports);
  73. document.addEventListener(fn[4], function() {
  74. exports.emit('change');
  75. });
  76. document.addEventListener(fn[5], function() {
  77. exports.emit('error');
  78. });
  79. module.exports = exports;