您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Inline embed for youtube links in reddit-stream.com
- // ==UserScript==
- // @name reddit-stream youtube
- // @description Inline embed for youtube links in reddit-stream.com
- // @namespace org.stevenhoward
- // @include http://reddit-stream.com/*
- // @version 1
- // @grant none
- // ==/UserScript==
- function createYoutubeEmbed (link) {
- let match = /.*[/]watch\?v=(.*)/.exec(link.href);
- let frame = document.createElement('iframe');
- if (match && match.length && match.length == 2) {
- frame.width = 640;
- frame.height = 390;
- frame.frameBorder = 0;
- frame.style.display = 'block';
- frame.src = `https://www.youtube.com/embed/${match[1]}?autoplay=1`;
- }
- /* Return an empty iframe for malformed urls. Don't care about errors for now. */
- return frame;
- }
- function addVideoExpando (link) {
- let toggle = document.createElement('a');
- toggle.href = 'javascript: void(0)';
- toggle.innerHTML = ' (+)';
- toggle.style.opacity = 0.5;
- toggle.addEventListener('click', function () {
- let existingFrame = link.parentNode.querySelector('iframe');
- if (existingFrame) {
- existingFrame.remove();
- toggle.innerHTML = ' (+)';
- }
- else {
- let frame = createYoutubeEmbed(link);
- toggle.parentNode.insertBefore(frame, toggle.nextSibling);
- toggle.innerHTML = ' (-)';
- }
- });
- link.parentNode.insertBefore(toggle, link.nextSibling);
- }
- new MutationObserver(function (mutations) {
- for (let mutation of mutations) {
- for (let node of mutation.addedNodes) {
- if (node.nodeType == Node.ELEMENT_NODE) {
- for (let video of node.querySelectorAll('a[href*="youtube.com"]')) {
- addVideoExpando(video);
- }
- }
- }
- }
- }).observe(document.getElementById('c-main'), {
- childList: true,
- subtree: true
- });
- for (let video of document.querySelectorAll('#c-main a[href*="youtube.com"]')) {
- addVideoExpando(video);
- }