您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Generate PIP button on YouTube Player
// ==UserScript== // @name YouTube PIP Button(iOS Safari) // @version 1.1 // @description Generate PIP button on YouTube Player // @match https://m.youtube.com/* // @grant none // @namespace https://greasyfork.org/users/1405339 // ==/UserScript== (function() { 'use strict'; const controlSelector = '.player-controls-bottom-left'; function createPipButton(video) { const btn = document.createElement('button'); btn.textContent = '◲'; Object.assign(btn.style, { background: 'rgba(0,0,0,0)', color: '#f1f1f1', fontWeight: '650', padding: '0px 9.5px', marginBottom: '8px', fontSize: '30px', userSelect: 'none', }); btn.classList.add('my-pip-btn'); btn.onclick = e => { e.stopPropagation(); if (!video) return; try { video.webkitPresentationMode === 'picture-in-picture' ? video.webkitSetPresentationMode('inline') : video.webkitSetPresentationMode('picture-in-picture'); } catch { } }; return btn; } function injectButtons() { const video = document.querySelector('video'); if (!video) return; const roots = [document]; const host = document.querySelector('ytp-player'); if (host?.shadowRoot) roots.push(host.shadowRoot); roots.forEach(root => { root.querySelectorAll(controlSelector).forEach(container => { if (!container.querySelector('.my-pip-btn')) { container.appendChild(createPipButton(video)); } }); }); } new MutationObserver(injectButtons).observe(document.body, {childList: true, subtree: true}); injectButtons(); })();