Greasy Fork

Greasy Fork is available in English.

SOOP Clip New Tab Opener

SOOP(sooplive.com)에서 클립 및 VOD 클릭 시 강제로 새 탭에서 열리도록 설정합니다.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         SOOP Clip New Tab Opener
// @namespace    http://tampermonkey.net/
// @version      2.2
// @description  SOOP(sooplive.com)에서 클립 및 VOD 클릭 시 강제로 새 탭에서 열리도록 설정합니다.
// @author       푸릴 (Made by Gemini)
// @match        *://*.sooplive.com/*

// ==/UserScript==

// This script was created by 푸릴, with help from Gemini.
/* author: 푸릴 made by gemini */

(function() {
    'use strict';
    
    // author: 푸릴 made by gemini

    // 1. 제공해주신 URL 형식을 포함하여 클립/VOD 링크인지 판별
    // SOOP의 URL 구조에 맞춰 키워드를 설정합니다.
    const isClipLink = (href) => {
        if (!href) return false;
        const lowerHref = href.toLowerCase();
        
        // 검색 결과, VOD, 클립, 플레이어 관련 키워드
        const keywords = ['/player/', '/video/', '/clip/', '/vod/', '/catch/'];
        return keywords.some(keyword => lowerHref.includes(keyword));
    };

    // 2. 문서 전체의 클릭 이벤트를 가장 먼저 가로채기 (capture: true)
    document.addEventListener('click', function(e) {
        // 마우스 왼쪽 버튼 클릭이 아닐 경우(휠 클릭 등)는 원래 브라우저 기능에 맡김
        if (e.button !== 0) return;

        // 클릭한 요소가 <a> 태그이거나 <a> 태그 내부의 이미지/텍스트인지 확인
        const targetLink = e.target.closest('a');

        if (targetLink && targetLink.href) {
            // 해당 링크가 VOD나 클립 주소라면
            if (isClipLink(targetLink.href)) {
                // SOOP 사이트 자체의 화면 전환 스크립트 실행을 완벽히 차단
                e.preventDefault();
                e.stopPropagation();

                // 강제로 새 탭 열기
                window.open(targetLink.href, '_blank');
            }
        }
    }, true); // true: 사이트 자체 코드보다 먼저 이벤트를 처리함(캡처링 단계)

})();