Hide controller for videos with no source (#467)

* Check for source upon initialization
* Hide controllers for videos with no source.
  - Create a MutationObserver for each video to watch for source changes.
This commit is contained in:
jacobcolbert
2019-05-04 12:26:43 -04:00
committed by Ilya Grigorik
parent 04eaa51cda
commit e6835f39ff
2 changed files with 27 additions and 2 deletions

View File

@@ -1,3 +1,4 @@
.vsc-nosource { display: none !important; }
.vsc-hidden { display: none !important; }
.vsc-manual {
visibility: visible !important;

View File

@@ -123,7 +123,10 @@
} else {
tc.settings.speeds[target.src] = tc.settings.lastSpeed;
}
this.div = this.initializeControls();
target.playbackRate = tc.settings.speeds[target.src];
this.div=this.initializeControls();
target.addEventListener('play', this.handlePlay = function(event) {
if (!tc.settings.rememberSpeed) {
@@ -152,7 +155,24 @@
}
}.bind(this));
target.playbackRate = tc.settings.speeds[target.src];
var observer=new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.type === 'attributes' && mutation.attributeName === 'src'){
var controller = document.querySelector(`div[data-vscid="${this.id}"]`);
if(!controller){
return;
}
if (!mutation.target.src) {
controller.classList.add('vsc-nosource');
} else {
controller.classList.remove('vsc-nosource');
}
}
});
});
observer.observe(target, {
attributeFilter: ["src"]
});
};
tc.videoController.prototype.getSpeed = function() {
@@ -177,6 +197,10 @@
wrapper.classList.add('vsc-controller');
wrapper.dataset['vscid'] = this.id;
if (!this.video.src) {
wrapper.classList.add('vsc-nosource');
}
if (tc.settings.startHidden) {
wrapper.classList.add('vsc-hidden');
}