diff --git a/base/base.user.js b/base/base.user.js index 2efc15c..436a68d 100644 --- a/base/base.user.js +++ b/base/base.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name TwitchAdSolutions // @namespace https://github.com/pixeltris/TwitchAdSolutions -// @version 1.8 +// @version 1.9 // @description Multiple solutions for blocking Twitch ads // @author pixeltris // @match *://*.twitch.tv/* @@ -576,8 +576,10 @@ return; } if (isSeek) { - console.log('Force seek to reset player (hopefully fixing any audio desync)'); + console.log('Force seek to reset player (hopefully fixing any audio desync) pos:' + player.getPosition() + ' range:' + JSON.stringify(player.getBuffered())); + var pos = player.getPosition(); player.seekTo(0); + player.seekTo(pos); return; } if (isPausePlay) { @@ -607,17 +609,21 @@ function onContentLoaded() { // This stops Twitch from pausing the player when in another tab and an ad shows. // Taken from https://github.com/saucettv/VideoAdBlockForTwitch/blob/cefce9d2b565769c77e3666ac8234c3acfe20d83/chrome/content.js#L30 - Object.defineProperty(document, 'visibilityState', { - get() { - return 'visible'; - } - }); - Object.defineProperty(document, 'hidden', { - get() { - return false; - } - }); - const block = e => { + try { + Object.defineProperty(document, 'visibilityState', { + get() { + return 'visible'; + } + }); + }catch{} + try { + Object.defineProperty(document, 'hidden', { + get() { + return false; + } + }); + }catch{} + var block = e => { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); @@ -626,19 +632,21 @@ document.addEventListener('webkitvisibilitychange', block, true); document.addEventListener('mozvisibilitychange', block, true); document.addEventListener('hasFocus', block, true); - if (/Firefox/.test(navigator.userAgent)) { - Object.defineProperty(document, 'mozHidden', { - get() { - return false; - } - }); - } else { - Object.defineProperty(document, 'webkitHidden', { - get() { - return false; - } - }); - } + try { + if (/Firefox/.test(navigator.userAgent)) { + Object.defineProperty(document, 'mozHidden', { + get() { + return false; + } + }); + } else { + Object.defineProperty(document, 'webkitHidden', { + get() { + return false; + } + }); + } + }catch{} } if (document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive") { onContentLoaded(); diff --git a/notify-reload/notify-reload-ublock-origin.js b/notify-reload/notify-reload-ublock-origin.js index 3cd26a0..1a5e165 100644 --- a/notify-reload/notify-reload-ublock-origin.js +++ b/notify-reload/notify-reload-ublock-origin.js @@ -567,8 +567,10 @@ twitch-videoad.js application/javascript return; } if (isSeek) { - console.log('Force seek to reset player (hopefully fixing any audio desync)'); + console.log('Force seek to reset player (hopefully fixing any audio desync) pos:' + player.getPosition() + ' range:' + JSON.stringify(player.getBuffered())); + var pos = player.getPosition(); player.seekTo(0); + player.seekTo(pos); return; } if (isPausePlay) { @@ -598,17 +600,21 @@ twitch-videoad.js application/javascript function onContentLoaded() { // This stops Twitch from pausing the player when in another tab and an ad shows. // Taken from https://github.com/saucettv/VideoAdBlockForTwitch/blob/cefce9d2b565769c77e3666ac8234c3acfe20d83/chrome/content.js#L30 - Object.defineProperty(document, 'visibilityState', { - get() { - return 'visible'; - } - }); - Object.defineProperty(document, 'hidden', { - get() { - return false; - } - }); - const block = e => { + try { + Object.defineProperty(document, 'visibilityState', { + get() { + return 'visible'; + } + }); + }catch{} + try { + Object.defineProperty(document, 'hidden', { + get() { + return false; + } + }); + }catch{} + var block = e => { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); @@ -617,19 +623,21 @@ twitch-videoad.js application/javascript document.addEventListener('webkitvisibilitychange', block, true); document.addEventListener('mozvisibilitychange', block, true); document.addEventListener('hasFocus', block, true); - if (/Firefox/.test(navigator.userAgent)) { - Object.defineProperty(document, 'mozHidden', { - get() { - return false; - } - }); - } else { - Object.defineProperty(document, 'webkitHidden', { - get() { - return false; - } - }); - } + try { + if (/Firefox/.test(navigator.userAgent)) { + Object.defineProperty(document, 'mozHidden', { + get() { + return false; + } + }); + } else { + Object.defineProperty(document, 'webkitHidden', { + get() { + return false; + } + }); + } + }catch{} } if (document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive") { onContentLoaded(); diff --git a/notify-reload/notify-reload.user.js b/notify-reload/notify-reload.user.js index bc699e7..dcdc462 100644 --- a/notify-reload/notify-reload.user.js +++ b/notify-reload/notify-reload.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name TwitchAdSolutions (notify-reload) // @namespace https://github.com/pixeltris/TwitchAdSolutions -// @version 1.8 +// @version 1.9 // @updateURL https://github.com/pixeltris/TwitchAdSolutions/raw/master/notify-reload/notify-reload.user.js // @downloadURL https://github.com/pixeltris/TwitchAdSolutions/raw/master/notify-reload/notify-reload.user.js // @description Multiple solutions for blocking Twitch ads (notify-reload) @@ -578,8 +578,10 @@ return; } if (isSeek) { - console.log('Force seek to reset player (hopefully fixing any audio desync)'); + console.log('Force seek to reset player (hopefully fixing any audio desync) pos:' + player.getPosition() + ' range:' + JSON.stringify(player.getBuffered())); + var pos = player.getPosition(); player.seekTo(0); + player.seekTo(pos); return; } if (isPausePlay) { @@ -609,17 +611,21 @@ function onContentLoaded() { // This stops Twitch from pausing the player when in another tab and an ad shows. // Taken from https://github.com/saucettv/VideoAdBlockForTwitch/blob/cefce9d2b565769c77e3666ac8234c3acfe20d83/chrome/content.js#L30 - Object.defineProperty(document, 'visibilityState', { - get() { - return 'visible'; - } - }); - Object.defineProperty(document, 'hidden', { - get() { - return false; - } - }); - const block = e => { + try { + Object.defineProperty(document, 'visibilityState', { + get() { + return 'visible'; + } + }); + }catch{} + try { + Object.defineProperty(document, 'hidden', { + get() { + return false; + } + }); + }catch{} + var block = e => { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); @@ -628,19 +634,21 @@ document.addEventListener('webkitvisibilitychange', block, true); document.addEventListener('mozvisibilitychange', block, true); document.addEventListener('hasFocus', block, true); - if (/Firefox/.test(navigator.userAgent)) { - Object.defineProperty(document, 'mozHidden', { - get() { - return false; - } - }); - } else { - Object.defineProperty(document, 'webkitHidden', { - get() { - return false; - } - }); - } + try { + if (/Firefox/.test(navigator.userAgent)) { + Object.defineProperty(document, 'mozHidden', { + get() { + return false; + } + }); + } else { + Object.defineProperty(document, 'webkitHidden', { + get() { + return false; + } + }); + } + }catch{} } if (document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive") { onContentLoaded(); diff --git a/notify-strip/notify-strip-ublock-origin.js b/notify-strip/notify-strip-ublock-origin.js index 856acd9..df1b3dd 100644 --- a/notify-strip/notify-strip-ublock-origin.js +++ b/notify-strip/notify-strip-ublock-origin.js @@ -567,8 +567,10 @@ twitch-videoad.js application/javascript return; } if (isSeek) { - console.log('Force seek to reset player (hopefully fixing any audio desync)'); + console.log('Force seek to reset player (hopefully fixing any audio desync) pos:' + player.getPosition() + ' range:' + JSON.stringify(player.getBuffered())); + var pos = player.getPosition(); player.seekTo(0); + player.seekTo(pos); return; } if (isPausePlay) { @@ -598,17 +600,21 @@ twitch-videoad.js application/javascript function onContentLoaded() { // This stops Twitch from pausing the player when in another tab and an ad shows. // Taken from https://github.com/saucettv/VideoAdBlockForTwitch/blob/cefce9d2b565769c77e3666ac8234c3acfe20d83/chrome/content.js#L30 - Object.defineProperty(document, 'visibilityState', { - get() { - return 'visible'; - } - }); - Object.defineProperty(document, 'hidden', { - get() { - return false; - } - }); - const block = e => { + try { + Object.defineProperty(document, 'visibilityState', { + get() { + return 'visible'; + } + }); + }catch{} + try { + Object.defineProperty(document, 'hidden', { + get() { + return false; + } + }); + }catch{} + var block = e => { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); @@ -617,19 +623,21 @@ twitch-videoad.js application/javascript document.addEventListener('webkitvisibilitychange', block, true); document.addEventListener('mozvisibilitychange', block, true); document.addEventListener('hasFocus', block, true); - if (/Firefox/.test(navigator.userAgent)) { - Object.defineProperty(document, 'mozHidden', { - get() { - return false; - } - }); - } else { - Object.defineProperty(document, 'webkitHidden', { - get() { - return false; - } - }); - } + try { + if (/Firefox/.test(navigator.userAgent)) { + Object.defineProperty(document, 'mozHidden', { + get() { + return false; + } + }); + } else { + Object.defineProperty(document, 'webkitHidden', { + get() { + return false; + } + }); + } + }catch{} } if (document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive") { onContentLoaded(); diff --git a/notify-strip/notify-strip.user.js b/notify-strip/notify-strip.user.js index abb9c0e..2693897 100644 --- a/notify-strip/notify-strip.user.js +++ b/notify-strip/notify-strip.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name TwitchAdSolutions (notify-strip) // @namespace https://github.com/pixeltris/TwitchAdSolutions -// @version 1.8 +// @version 1.9 // @updateURL https://github.com/pixeltris/TwitchAdSolutions/raw/master/notify-strip/notify-strip.user.js // @downloadURL https://github.com/pixeltris/TwitchAdSolutions/raw/master/notify-strip/notify-strip.user.js // @description Multiple solutions for blocking Twitch ads (notify-strip) @@ -578,8 +578,10 @@ return; } if (isSeek) { - console.log('Force seek to reset player (hopefully fixing any audio desync)'); + console.log('Force seek to reset player (hopefully fixing any audio desync) pos:' + player.getPosition() + ' range:' + JSON.stringify(player.getBuffered())); + var pos = player.getPosition(); player.seekTo(0); + player.seekTo(pos); return; } if (isPausePlay) { @@ -609,17 +611,21 @@ function onContentLoaded() { // This stops Twitch from pausing the player when in another tab and an ad shows. // Taken from https://github.com/saucettv/VideoAdBlockForTwitch/blob/cefce9d2b565769c77e3666ac8234c3acfe20d83/chrome/content.js#L30 - Object.defineProperty(document, 'visibilityState', { - get() { - return 'visible'; - } - }); - Object.defineProperty(document, 'hidden', { - get() { - return false; - } - }); - const block = e => { + try { + Object.defineProperty(document, 'visibilityState', { + get() { + return 'visible'; + } + }); + }catch{} + try { + Object.defineProperty(document, 'hidden', { + get() { + return false; + } + }); + }catch{} + var block = e => { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); @@ -628,19 +634,21 @@ document.addEventListener('webkitvisibilitychange', block, true); document.addEventListener('mozvisibilitychange', block, true); document.addEventListener('hasFocus', block, true); - if (/Firefox/.test(navigator.userAgent)) { - Object.defineProperty(document, 'mozHidden', { - get() { - return false; - } - }); - } else { - Object.defineProperty(document, 'webkitHidden', { - get() { - return false; - } - }); - } + try { + if (/Firefox/.test(navigator.userAgent)) { + Object.defineProperty(document, 'mozHidden', { + get() { + return false; + } + }); + } else { + Object.defineProperty(document, 'webkitHidden', { + get() { + return false; + } + }); + } + }catch{} } if (document.readyState === "complete" || document.readyState === "loaded" || document.readyState === "interactive") { onContentLoaded();