// ==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/* // @downloadURL https://update.greasyfork.icu/scripts/571809/SOOP%20Clip%20New%20Tab%20Opener.user.js // @updateURL https://update.greasyfork.icu/scripts/571809/SOOP%20Clip%20New%20Tab%20Opener.meta.js // ==/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; // 클릭한 요소가 태그이거나 태그 내부의 이미지/텍스트인지 확인 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: 사이트 자체 코드보다 먼저 이벤트를 처리함(캡처링 단계) })();