gyorgy@0
|
1 (function($) {
|
gyorgy@0
|
2 mejs.MediaElementDefaults.forcePluginFullScreen = false;
|
gyorgy@0
|
3
|
gyorgy@0
|
4 MediaElementPlayer.prototype.isFullScreen = false;
|
gyorgy@0
|
5 MediaElementPlayer.prototype.buildfullscreen = function(player, controls, layers, media) {
|
gyorgy@0
|
6
|
gyorgy@0
|
7 if (!player.isVideo)
|
gyorgy@0
|
8 return;
|
gyorgy@0
|
9
|
gyorgy@0
|
10 // native events
|
gyorgy@0
|
11 if (mejs.MediaFeatures.hasNativeFullScreen) {
|
gyorgy@0
|
12 player.container.bind('webkitfullscreenchange', function(e) {
|
gyorgy@0
|
13
|
gyorgy@0
|
14 if (document.webkitIsFullScreen) {
|
gyorgy@0
|
15 // reset the controls once we are fully in full screen
|
gyorgy@0
|
16 player.setControlsSize();
|
gyorgy@0
|
17 } else {
|
gyorgy@0
|
18 // when a user presses ESC
|
gyorgy@0
|
19 // make sure to put the player back into place
|
gyorgy@0
|
20 player.exitFullScreen();
|
gyorgy@0
|
21 }
|
gyorgy@0
|
22 });
|
gyorgy@0
|
23 }
|
gyorgy@0
|
24
|
gyorgy@0
|
25 var
|
gyorgy@0
|
26 normalHeight = 0,
|
gyorgy@0
|
27 normalWidth = 0,
|
gyorgy@0
|
28 container = player.container,
|
gyorgy@0
|
29 docElement = document.documentElement,
|
gyorgy@0
|
30 docStyleOverflow,
|
gyorgy@0
|
31 parentWindow = window.parent,
|
gyorgy@0
|
32 parentiframes,
|
gyorgy@0
|
33 iframe,
|
gyorgy@0
|
34 fullscreenBtn =
|
gyorgy@0
|
35 $('<div class="mejs-button mejs-fullscreen-button"><button type="button"></button></div>')
|
gyorgy@0
|
36 .appendTo(controls)
|
gyorgy@0
|
37 .click(function() {
|
gyorgy@0
|
38 var isFullScreen = (mejs.MediaFeatures.hasNativeFullScreen) ?
|
gyorgy@0
|
39 document.webkitIsFullScreen :
|
gyorgy@0
|
40 player.isFullScreen;
|
gyorgy@0
|
41
|
gyorgy@0
|
42 if (isFullScreen) {
|
gyorgy@0
|
43 player.exitFullScreen();
|
gyorgy@0
|
44 } else {
|
gyorgy@0
|
45 player.enterFullScreen();
|
gyorgy@0
|
46 }
|
gyorgy@0
|
47 });
|
gyorgy@0
|
48
|
gyorgy@0
|
49 player.enterFullScreen = function() {
|
gyorgy@0
|
50
|
gyorgy@0
|
51 // firefox can't adjust plugin sizes without resetting :(
|
gyorgy@0
|
52 if (player.pluginType !== 'native' && (mejs.MediaFeatures.isFirefox || player.options.forcePluginFullScreen)) {
|
gyorgy@0
|
53 media.setFullscreen(true);
|
gyorgy@0
|
54 //player.isFullScreen = true;
|
gyorgy@0
|
55 return;
|
gyorgy@0
|
56 }
|
gyorgy@0
|
57
|
gyorgy@0
|
58 // attempt to set fullscreen
|
gyorgy@0
|
59 if (mejs.MediaFeatures.hasNativeFullScreen) {
|
gyorgy@0
|
60 player.container[0].webkitRequestFullScreen();
|
gyorgy@0
|
61 }
|
gyorgy@0
|
62
|
gyorgy@0
|
63 // store overflow
|
gyorgy@0
|
64 docStyleOverflow = docElement.style.overflow;
|
gyorgy@0
|
65 // set it to not show scroll bars so 100% will work
|
gyorgy@0
|
66 docElement.style.overflow = 'hidden';
|
gyorgy@0
|
67
|
gyorgy@0
|
68 // store
|
gyorgy@0
|
69 normalHeight = player.container.height();
|
gyorgy@0
|
70 normalWidth = player.container.width();
|
gyorgy@0
|
71
|
gyorgy@0
|
72 // make full size
|
gyorgy@0
|
73 container
|
gyorgy@0
|
74 .addClass('mejs-container-fullscreen')
|
gyorgy@0
|
75 .width('100%')
|
gyorgy@0
|
76 .height('100%')
|
gyorgy@0
|
77 .css('z-index', 1000);
|
gyorgy@0
|
78 //.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000});
|
gyorgy@0
|
79
|
gyorgy@0
|
80 if (player.pluginType === 'native') {
|
gyorgy@0
|
81 player.$media
|
gyorgy@0
|
82 .width('100%')
|
gyorgy@0
|
83 .height('100%');
|
gyorgy@0
|
84 } else {
|
gyorgy@0
|
85 container.find('object embed')
|
gyorgy@0
|
86 .width('100%')
|
gyorgy@0
|
87 .height('100%');
|
gyorgy@0
|
88 player.media.setVideoSize($(window).width(),$(window).height());
|
gyorgy@0
|
89 }
|
gyorgy@0
|
90
|
gyorgy@0
|
91 layers.children('div')
|
gyorgy@0
|
92 .width('100%')
|
gyorgy@0
|
93 .height('100%');
|
gyorgy@0
|
94
|
gyorgy@0
|
95 fullscreenBtn
|
gyorgy@0
|
96 .removeClass('mejs-fullscreen')
|
gyorgy@0
|
97 .addClass('mejs-unfullscreen');
|
gyorgy@0
|
98
|
gyorgy@0
|
99 player.setControlsSize();
|
gyorgy@0
|
100 player.isFullScreen = true;
|
gyorgy@0
|
101 };
|
gyorgy@0
|
102 player.exitFullScreen = function() {
|
gyorgy@0
|
103
|
gyorgy@0
|
104 // firefox can't adjust plugins
|
gyorgy@0
|
105 if (player.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) {
|
gyorgy@0
|
106 media.setFullscreen(false);
|
gyorgy@0
|
107 //player.isFullScreen = false;
|
gyorgy@0
|
108 return;
|
gyorgy@0
|
109 }
|
gyorgy@0
|
110
|
gyorgy@0
|
111 // come outo of native fullscreen
|
gyorgy@0
|
112 if (mejs.MediaFeatures.hasNativeFullScreen && document.webkitIsFullScreen) {
|
gyorgy@0
|
113 document.webkitCancelFullScreen();
|
gyorgy@0
|
114 }
|
gyorgy@0
|
115
|
gyorgy@0
|
116 // restore scroll bars to document
|
gyorgy@0
|
117 docElement.style.overflow = docStyleOverflow;
|
gyorgy@0
|
118
|
gyorgy@0
|
119 container
|
gyorgy@0
|
120 .removeClass('mejs-container-fullscreen')
|
gyorgy@0
|
121 .width(normalWidth)
|
gyorgy@0
|
122 .height(normalHeight)
|
gyorgy@0
|
123 .css('z-index', 1);
|
gyorgy@0
|
124 //.css({position: '', left: '', top: '', right: '', bottom: '', overflow: 'inherit', width: normalWidth + 'px', height: normalHeight + 'px', 'z-index': 1});
|
gyorgy@0
|
125
|
gyorgy@0
|
126 if (player.pluginType === 'native') {
|
gyorgy@0
|
127 player.$media
|
gyorgy@0
|
128 .width(normalWidth)
|
gyorgy@0
|
129 .height(normalHeight);
|
gyorgy@0
|
130 } else {
|
gyorgy@0
|
131 container.find('object embed')
|
gyorgy@0
|
132 .width(normalWidth)
|
gyorgy@0
|
133 .height(normalHeight);
|
gyorgy@0
|
134
|
gyorgy@0
|
135 player.media.setVideoSize(normalWidth, normalHeight);
|
gyorgy@0
|
136 }
|
gyorgy@0
|
137
|
gyorgy@0
|
138 layers.children('div')
|
gyorgy@0
|
139 .width(normalWidth)
|
gyorgy@0
|
140 .height(normalHeight);
|
gyorgy@0
|
141
|
gyorgy@0
|
142 fullscreenBtn
|
gyorgy@0
|
143 .removeClass('mejs-unfullscreen')
|
gyorgy@0
|
144 .addClass('mejs-fullscreen');
|
gyorgy@0
|
145
|
gyorgy@0
|
146 player.setControlsSize();
|
gyorgy@0
|
147 player.isFullScreen = false;
|
gyorgy@0
|
148 };
|
gyorgy@0
|
149
|
gyorgy@0
|
150 $(window).bind('resize',function (e) {
|
gyorgy@0
|
151 player.setControlsSize();
|
gyorgy@0
|
152 });
|
gyorgy@0
|
153
|
gyorgy@0
|
154 $(document).bind('keydown',function (e) {
|
gyorgy@0
|
155 if (player.isFullScreen && e.keyCode == 27) {
|
gyorgy@0
|
156 player.exitFullScreen();
|
gyorgy@0
|
157 }
|
gyorgy@0
|
158 });
|
gyorgy@0
|
159
|
gyorgy@0
|
160 }
|
gyorgy@0
|
161
|
gyorgy@0
|
162 })(mejs.$); |