aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/plyr.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/plyr.js')
-rw-r--r--src/js/plyr.js75
1 files changed, 43 insertions, 32 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js
index 52f4b9d9..ca160ac6 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -2196,13 +2196,15 @@
}
}
- // Listen for events
- function _listeners() {
+ // Listen for control events
+ function _controlListeners() {
// IE doesn't support input event, so we fallback to change
var inputEvent = (plyr.browser.name == 'IE' ? 'change' : 'input');
// Click play/pause helper
- function _togglePlay(play) {
+ function _togglePlay() {
+ var play = plyr.media.paused;
+
// Toggle playback
if (play) {
_play();
@@ -2264,10 +2266,10 @@
}
// Play
- _proxyHandler(plyr.buttons.play, 'click', config.handlers.play, function() { _togglePlay(true); });
+ _proxyHandler(plyr.buttons.play, 'click', config.handlers.play, _togglePlay);
// Pause
- _proxyHandler(plyr.buttons.pause, 'click', config.handlers.pause, function() { _togglePlay(); });
+ _proxyHandler(plyr.buttons.pause, 'click', config.handlers.pause, _togglePlay);
// Restart
_proxyHandler(plyr.buttons.restart, 'click', config.handlers.restart, _seek);
@@ -2297,6 +2299,28 @@
_on(document, fullscreen.fullScreenEventName, _toggleFullscreen);
}
+ // Captions
+ _on(plyr.buttons.captions, 'click', _toggleCaptions);
+
+ // Click video
+ if (plyr.type === 'video' && config.click) {
+ _on(plyr.videoContainer, 'click', function() {
+ if (plyr.media.paused) {
+ _play();
+ }
+ else if (plyr.media.ended) {
+ _seek();
+ _play();
+ }
+ else {
+ _pause();
+ }
+ });
+ }
+ }
+
+ // Listen for media events
+ function _mediaListeners() {
// Time change on media
_on(plyr.media, 'timeupdate seeking', _timeUpdate);
@@ -2306,9 +2330,6 @@
// Display duration
_on(plyr.media, 'loadedmetadata', _displayDuration);
- // Captions
- _on(plyr.buttons.captions, 'click', _toggleCaptions);
-
// Handle the media finishing
_on(plyr.media, 'ended', function() {
// Clear
@@ -2331,22 +2352,6 @@
// Loading
_on(plyr.media, 'waiting canplay seeked', _checkLoading);
-
- // Click video
- if (plyr.type === 'video' && config.click) {
- _on(plyr.videoContainer, 'click', function() {
- if (plyr.media.paused) {
- _play();
- }
- else if (plyr.media.ended) {
- _seek();
- _play();
- }
- else {
- _pause();
- }
- });
- }
}
// Destroy an instance
@@ -2482,26 +2487,32 @@
return;
}
- // Inject custom controls
- if (!_getElements(config.selectors.controls.wrapper).length) {
+ // Inject custom controls if not present
+ var controlsMissing = !_getElements(config.selectors.controls.wrapper).length;
+ if (controlsMissing) {
// Inject custom controls
_injectControls();
}
- // Remove native controls
- _toggleControls();
-
// Find the elements
if (!_findElements()) {
return;
}
+ // If the controls are injected, re-bind listeners for controls
+ if (controlsMissing) {
+ _controlListeners();
+ }
+
+ // Media element listeners
+ _mediaListeners();
+
+ // Remove native controls
+ _toggleControls();
+
// Setup fullscreen
_setupFullscreen();
- // Listeners
- _listeners();
-
// Captions
_setupCaptions();