您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button under YouTube videos to open the embed page for the current video.
- // ==UserScript==
- // @name YouTube Embed Button Under Video
- // @namespace https://gf.qytechs.cn/en/scripts/537364-youtube-embed-button-under-video
- // @homepageURL https://github.com/almahmudbd
- // @version 2.2
- // @description Adds a button under YouTube videos to open the embed page for the current video.
- // @license GPL-3
- // @author unknown
- // @match https://www.youtube.com/watch*
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- // Helper to get video ID from current URL
- function getVideoId() {
- const urlObj = new URL(window.location.href);
- return urlObj.searchParams.get('v');
- }
- // Create and insert the embed button under the video
- function insertEmbedButton() {
- // Avoid duplicate buttons
- if (document.getElementById('yt-embed-link-btn')) return;
- const videoId = getVideoId();
- if (!videoId) return;
- // Find the container below the video (where buttons like Share/Like appear)
- // This selector is relatively stable, but may need updating if YouTube changes its layout
- const actionsRow = document.querySelector('#top-level-buttons-computed, ytd-menu-renderer #top-level-buttons');
- if (actionsRow) {
- // Create the button
- const btn = document.createElement('button');
- btn.id = 'yt-embed-link-btn';
- btn.textContent = '▶ Open Embed Page';
- btn.style.marginLeft = "8px";
- btn.style.padding = "6px 12px";
- btn.style.background = "#222";
- btn.style.color = "#fff";
- btn.style.border = "none";
- btn.style.borderRadius = "3px";
- btn.style.cursor = "pointer";
- btn.title = "Open this video in YouTube embed view";
- btn.onclick = () => {
- const embedUrl = `https://www.youtube.com/embed/${videoId}`;
- window.open(embedUrl, '_blank');
- };
- // Insert the button at the end of the action row
- actionsRow.appendChild(btn);
- }
- }
- // Observe for SPA navigation and DOM updates
- let lastUrl = location.href;
- const observer = new MutationObserver(() => {
- if (location.href !== lastUrl) {
- lastUrl = location.href;
- // Remove button if navigating away (prevents stale button)
- const oldBtn = document.getElementById('yt-embed-link-btn');
- if (oldBtn) oldBtn.remove();
- setTimeout(insertEmbedButton, 700); // Wait a bit for the new page to render
- }
- // Try to insert the button if not present (handles dynamic loading)
- if (!document.getElementById('yt-embed-link-btn')) {
- setTimeout(insertEmbedButton, 700);
- }
- });
- observer.observe(document.body, { childList: true, subtree: true });
- // Initial insert
- setTimeout(insertEmbedButton, 1000);
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址