您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在 Yahoo!ニュース pickup 頁自動跳轉至完整文章
// ==UserScript== // @name Yahoo!ニュース 自動跳轉完整文章(高速版) // @namespace http://tampermonkey.net/ // @author gpt5 // @version 2.0 // @description 在 Yahoo!ニュース pickup 頁自動跳轉至完整文章 // @match https://news.yahoo.co.jp/pickup/* // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; let redirected = false; const root = document.querySelector('main, #__next, #content, body') || document.body; function findReadMoreLink(container) { let a = container.querySelector('a[aria-label*="記事全文"], a[aria-label*="全文"], a[role="button"]'); if (a && /articles\//.test(a.href)) return a; a = container.querySelector('a[class*="read"], a[class*="more"], a[class*="全文"], a[class*="pickup"]'); if (a && /articles\//.test(a.href)) return a; const candidates = container.querySelectorAll('a[href*="/articles/"], a[href*="news.yahoo.co.jp/articles/"]'); if (candidates.length === 1) return candidates[0]; for (const link of candidates) { const text = (link.innerText || link.textContent || '').trim(); if (text.includes('記事全文を読む') || text.includes('続きを読む') || text.includes('全文')) { return link; } } return null; } function redirectIfFound() { if (redirected) return; const link = findReadMoreLink(root); if (link && link.href && !redirected) { redirected = true; location.replace(link.href); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', redirectIfFound, { once: true, passive: true }); } else { setTimeout(redirectIfFound, 0); } let timer = null; const observer = new MutationObserver(() => { if (redirected) { observer.disconnect(); return; } if (timer) clearTimeout(timer); timer = setTimeout(() => { redirectIfFound(); }, 50); }); observer.observe(root, { childList: true, subtree: true }); setTimeout(redirectIfFound, 1000); setTimeout(() => { redirectIfFound(); if (!redirected) observer.disconnect(); }, 3000); })();