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.js53
1 files changed, 35 insertions, 18 deletions
diff --git a/src/js/plyr.js b/src/js/plyr.js
index 1f4e70c4..79597b99 100644
--- a/src/js/plyr.js
+++ b/src/js/plyr.js
@@ -533,6 +533,11 @@
// Trigger event
function _triggerEvent(element, event) {
+ // Bail if no element
+ if(!element || !event) {
+ return;
+ }
+
// Create faux event
var fauxEvent = document.createEvent('MouseEvents');
@@ -545,6 +550,11 @@
// Toggle aria-pressed state on a toggle button
function _toggleState(target, state) {
+ // Bail if no target
+ if(!target) {
+ return;
+ }
+
// Get state
state = (typeof state === 'boolean' ? state : !target.getAttribute('aria-pressed'));
@@ -909,14 +919,14 @@
// Setup aria attribute for play and iframe title
function _setTitle(iframe) {
// Find the current text
- var label = plyr.buttons.play.innerText || config.i18n.play;
+ var label = config.i18n.play;
// If there's a media title set, use that for the label
if (typeof(config.title) !== 'undefined' && config.title.length) {
label += ', ' + config.title;
}
- // If there's no play button, bail
+ // If there's a play button, set label
if (plyr.buttons.play) {
plyr.buttons.play.setAttribute('aria-label', label);
}
@@ -2065,6 +2075,24 @@
// IE doesn't support input event, so we fallback to change
var inputEvent = (plyr.browser.name == 'IE' ? 'change' : 'input');
+ // Click play/pause helpers
+ function _onPlay() {
+ _play();
+ setTimeout(function() {
+ if(plyr.buttons.pause) {
+ plyr.buttons.pause.focus();
+ }
+ }, 100);
+ }
+ function _onPause() {
+ _pause();
+ setTimeout(function() {
+ if(plyr.buttons.play) {
+ plyr.buttons.play.focus();
+ }
+ }, 100);
+ }
+
// Detect tab focus
function checkFocus() {
var focused = document.activeElement;
@@ -2095,22 +2123,11 @@
});
}
- // Messages
- /*_on(window, 'message', function(event) {
- _log(event);
- });*/
-
// Play
- _on(plyr.buttons.play, 'click', function() {
- _play();
- setTimeout(function() { plyr.buttons.pause.focus(); }, 100);
- });
+ _on(plyr.buttons.play, 'click', _onPlay);
// Pause
- _on(plyr.buttons.pause, 'click', function() {
- _pause();
- setTimeout(function() { plyr.buttons.play.focus(); }, 100);
- });
+ _on(plyr.buttons.pause, 'click', _onPause);
// Restart
_on(plyr.buttons.restart, 'click', _seek);
@@ -2179,14 +2196,14 @@
if (plyr.type === 'video' && config.click) {
_on(plyr.videoContainer, 'click', function() {
if (plyr.media.paused) {
- _triggerEvent(plyr.buttons.play, 'click');
+ _onPlay();
}
else if (plyr.media.ended) {
_seek();
- _triggerEvent(plyr.buttons.play, 'click');
+ _onPlay();
}
else {
- _triggerEvent(plyr.buttons.pause, 'click');
+ _onPause();
}
});
}