diff --git a/netflix-speed.user.js b/netflix-speed.user.js
index 136f227..3eae5f7 100644
--- a/netflix-speed.user.js
+++ b/netflix-speed.user.js
@@ -1,77 +1,70 @@
// ==UserScript==
// @name netflix-speed
-// @version 0.7
+// @version 0.8
// @include https://www.netflix.com/*
// ==/UserScript==
function find_controls() {
- return new Promise(function(resolve, reject) {
- var observer = new MutationObserver(function(mutationsList) {
- mutationsList.forEach(function(mutation) {
- var nodes = Array.from(mutation.addedNodes);
- for (var node of nodes) {
- /* classic ui - black bar at the bottom */
- if (node.matches && node.matches('.classic-ui') && node.querySelector('.video-title')) {
- resolve(node.querySelector('.video-title').previousElementSibling);
- return;
- }
- /* modern ui - play/pause in the middle of the screen */
- if (node.matches && node.matches('.AkiraPlayer') && (node.querySelector('.button-nfplayerNextEpisode') || node.querySelector('.button-nfplayerSubtitles'))) {
- var elem = node.querySelector('.button-nfplayerNextEpisode') || node.querySelector('.button-nfplayerSubtitles');
- resolve(elem.parentNode);
- return;
- }
- }
- });
- });
-
- observer.observe(document.documentElement, { childList: true, subtree: true });
+ return new Promise(function(resolve, reject) {
+ var observer = new MutationObserver(function(mutationsList) {
+ mutationsList.forEach(function(mutation) {
+ var nodes = Array.from(mutation.addedNodes);
+ for (var node of nodes) {
+ if (node.matches && node.matches('.AkiraPlayer') && (node.querySelector('.button-nfplayerNextEpisode') || node.querySelector('.button-nfplayerSubtitles'))) {
+ var elem = node.querySelector('.button-nfplayerNextEpisode') || node.querySelector('.button-nfplayerSubtitles');
+ resolve(elem.parentNode);
+ return;
+ }
+ }
+ });
});
+
+ observer.observe(document.documentElement, { childList: true, subtree: true });
+ });
}
function inject_controls() {
- find_controls().then(function(controls) {
- /* don't inject multiple times */
- if (document.querySelector('#speed-control'))
- return;
+ find_controls().then(function(controls) {
+ /* remove report a problem button */
+ if (document.querySelector('div.ReportAProblemPopupContainer'))
+ document.querySelector('div.ReportAProblemPopupContainer').remove();
- /* create speed_control element */
- var speed_control = document.createElement('select');
- speed_control.id = 'speed-control';
- speed_control.style.cssText = `
- border-left: 1px solid #323232;
- border-right: 1px solid #151515;
- border-top: none;
- border-bottom: none;
- background: none;
- -moz-appearance: none;
- -webkit-appearance: none;
- appearance: none;
- min-width: 5em;
- width: auto;
- height: 100%;
- font-size: 2.2em;
- text-align: center;
- cursor: pointer;
- `;
- speed_control.id = 'speed-control';
- speed_control.onchange = function() {
- document.querySelector('.VideoContainer video').playbackRate = this.value;
- };
- speed_control.innerHTML = `
+ /* don't inject multiple times */
+ if (document.querySelector('#speed-control'))
+ return;
+
+ /* create speed_control element */
+ var speed_control = document.createElement('div');
+ speed_control.innerHTML = ``;
+ speed_control.id = 'speed-control';
+ speed_control.style.cssText = `
+ padding: 0 0 1.68em 0;
+ margin: 0 1.5em;`;
+ speed_control.firstChild.style.cssText = `
+ -webkit-appearance: none;
+ background: none;
+ border: none;
+ font-size: 2.2em;
+ text-align: right;`;
+ speed_control.firstChild.onchange = function() {
+ document.querySelector('.VideoContainer video').playbackRate = this.value;
+ };
- /* inject speed_control element */
- controls.after(speed_control);
+ /* inject speed_control element */
+ controls.before(speed_control);
- /* redo injection, in case of video change, ... */
- inject_controls();
- });
+ /* redo injection, in case of video change, ... */
+ inject_controls();
+ });
};
+/* initial run of injection */
inject_controls();