PinP Fork

  • /*
     * @title PinP
     * @description toggle the video Picture-in-Picture mode
     * @include http://*
     * @include https://*
     * @contributor hogashi http://let.hatelabo.jp/hogashi/let/hJmexZGA67IB
     * @license MIT License https://opensource.org/licenses/MIT
     * @javascript_url
     */
    
    // e.g.
    // https://vimeo.com/44039048
    // http://www.htmq.com/html5/sample/004_1.html
    //
    // TBD shadow-root e.g.
    // https://interactive-examples.mdn.mozilla.net/pages/tabbed/video.html
    //  https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source
    (() => {
        'use strict';
        // c.f.
        // https://wicg.github.io/picture-in-picture/
        // https://github.com/WICG/picture-in-picture
        if (document.pictureInPictureElement) {
            document.exitPictureInPicture();
            return;
        }
    
        [...document.body.querySelectorAll([
            /*/
            'video[src]'
            // NIY :has() Selectors Level 4
            'video:has(> source)',
            /*/
            'video',
            //*/
        ])].some(v => {
            if (v.src || [...v.querySelectorAll([
                'source',
            ])].some(s => !!s && s.src)) {
                v.requestPictureInPicture();
            }
        });
    })();
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。