YouTube Embeded Popupper

You can pop up embeded videos by right click. (It may require permission for pop up blocker at the first pop)

目前为 2017-07-18 提交的版本。查看 最新版本

// ==UserScript==
// @name        YouTube Embeded Popupper
// @namespace   knoa.jp
// @description You can pop up embeded videos by right click. (It may require permission for pop up blocker at the first pop)
// @description:ja YouTubeの埋め込み動画を、右クリックからポップアップで開けるようにします。(初回のみポップアップブロックの許可が必要かもしれません)
// @include     https://www.youtube.com/embed/*
// @version     1.2
// @grant       none
// ==/UserScript==

(function (){
  const SCRIPTNAME = 'YouTubeEmbededPopupper';
  const DEBUG = false;
  console.time(SCRIPTNAME);
  const POPUPWIDTH = 960;/*width of popup window*/
  const POPUPTITLE = 'Right Click to Popup';/*shown on mouse hover*/
  let params = [/* Overwrite parameters */
    'autoplay=1',/*autoplay*/
    'controls=2',/*show controls*/
    'disablekb=0',/*enable keyboard control*/
    'fs=1',/*enable fullscreen*/
    'rel=0',/*not to show relative videos*/
    'popped=1',/*(original)prevent grandchild popup*/
  ];
  let core = {
    initialize: function(){
      /* Prevent grandchild popup and enables shortcut keys on popupped window */
      if(location.href.includes('popped=1')) return setTimeout(function(){document.querySelector('video').focus();}, 100);
      /* Right Click to Popup */
      document.body.title = POPUPTITLE;
      document.body.addEventListener('contextmenu', function(e){
        /* Define elements */
        let player = document.querySelector('.html5-video-player');
        let time = document.querySelector('span.ytp-time-current');
        /* Stop playing */
        if(player.classList.contains('playing-mode')) player.click();
        /* Get current time */
        let t = time.textContent.split(':').map(t => parseInt(t)).reverse();
        let start = 0;
        switch(t.length){
          case(3):
            start += t[2]*60*60;
          case(2):
            start += t[1]*60;
          case(1):
            start += t[0];
        }
        params.push('start=' + start);
        /* Build URL */
        /* (Duplicated params are overwritten by former) */
        let l = location.href.split('?');
        let url = l[0] + '?' + params.join('&');
        if(l.length === 2) url += ('&' + l[1]);
        /* Open popup window */
        /* (Use URL for window name to prevent popupping the same videos) */
        window.open(url, location.href, [
          'width=' + POPUPWIDTH,
          'height=' + (POPUPWIDTH / document.body.offsetWidth) * document.body.offsetHeight,
        ].join(','));
        e.preventDefault();
        e.stopPropagation();
      }, {capture: true});
    },
  };
  let log = (DEBUG) ? console.log.bind(null, SCRIPTNAME + ':') : function(){};
  core.initialize();
  console.timeEnd(SCRIPTNAME);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址