您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
当出现"影片已暂停,要继续观赏吗?"时忽略它继续播放
当前为
- // ==UserScript==
- // @name youtube continue play
- // @name:en youtube continue play
- // @name:zh-CN youtube继续播放
- // @name:zh-TW youtube繼續播放
- // @name:ja youtube履歴書再生
- // @description When "Video paused, do you want to continue watching?" Appears, ignore it and continue playing automatically
- // @description:en When "Video paused, do you want to continue watching?" Appears, ignore it and continue playing automatically
- // @description:zh-TW 當出現"影片已暫停,要繼續觀賞嗎?"時忽略它繼續播放
- // @description:zh-CN 当出现"影片已暂停,要继续观赏吗?"时忽略它继续播放
- // @description:ja 「ビデオが一時停止しましたが、引き続き視聴しますか?」が表示されたら無視して再生を続けます
- // @namespace https://greasyfork.org/zh-TW/users/461233-jack850628
- // @version 1.16
- // @author jack850628
- // @include /^https?:\/\/(:?.*?\.)*youtube.com\/.*$/
- // @noframes
- // @run-at document-end
- // @license MIT
- // ==/UserScript==
- (function() {
- let pausedF = function({target: videoPlay}){
- setTimeout(function(){
- let ytConfirmDialog = document.querySelector('yt-confirm-dialog-renderer');
- if(
- ytConfirmDialog &&
- (
- ytConfirmDialog.parentElement.style.display != 'none' ||
- (
- document.hidden &&
- videoPlay.getCurrentTime() < videoPlay.getDuration()
- )
- )
- ){
- videoPlay.play();
- }
- }, 500);
- }
- function listenerVideoPlayer(){
- let videoPlay = document.querySelector('video');
- if(!videoPlay){
- return false;
- }
- videoPlay.addEventListener('pause', pausedF);
- return true;
- }
- let scriptBlocks = document.getElementsByTagName('script')[0];
- let ycpScript = document.createElement('script');
- ycpScript.setAttribute('id','ycp-script');
- ycpScript.setAttribute('ycp-data','wait');
- ycpScript.innerHTML = `
- window.spf._request = window.spf.request;
- Object.defineProperty(window.spf, 'request', {
- value: function(){
- if(arguments[1]){
- if(arguments[1].onDone){
- let onDone = arguments[1].onDone;
- arguments[1].onDone = function(){
- let result = onDone.apply(this,arguments);
- document.querySelector('#ycp-script').setAttribute('ycp-data','ok');
- return result;
- }
- }else{
- arguments[1].onDone = () => document.querySelector('#ycp-script').setAttribute('ycp-data','ok');
- }
- }
- return window.spf._request.apply(this,arguments);
- },
- writable: true,
- configurable: true
- });
- document.querySelector('#ycp-script').setAttribute('ycp-data','ok');
- `;
- let ycpScriptObserver = new MutationObserver(([{target: ycpScript}], observer) => {
- if(ycpScript.getAttribute('ycp-data') == 'ok'){
- if(!listenerVideoPlayer()) ycpScript.setAttribute('ycp-data','wait')
- else ycpScriptObserver.disconnect();
- }
- });
- if(scriptBlocks){
- ycpScriptObserver.observe(
- ycpScript,
- {
- attributes: true
- }
- );
- scriptBlocks.parentNode.insertBefore(ycpScript,scriptBlocks);
- }
- })();