Youtube Video Flip Toggle

Toggle horizontal flip on video elements

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name         Youtube Video Flip Toggle
// @namespace    https://greasyfork.org/en/users/807108-jeremy-r
// @version      1.1
// @description  Toggle horizontal flip on video elements
// @match        https://www.youtube.com/watch?v=*
// @grant        GM_registerMenuCommand
// @author       JRem
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    let flipped = false;
    let observer = null;

    function applyFlip(video) {
        video.style.transform = flipped ? 'scaleX(-1)' : 'scaleX(1)';
    }

    function toggleFlip() {
        const video = document.querySelector('video');
        if (!video) {
            alert("No <video> element found on this page.");
            return;
        }

        flipped = !flipped;
        applyFlip(video);

        if (flipped && !observer) {
            // Watch for style resets
            observer = new MutationObserver(() => {
                applyFlip(video);
            });
            observer.observe(video, { attributes: true, attributeFilter: ['style'] });
        } else if (!flipped && observer) {
            observer.disconnect();
            observer = null;
        }
    }

    GM_registerMenuCommand("Toggle Video Flip", toggleFlip);
})();