您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
just open direct!
当前为
- // ==UserScript==
- // @name open_original_links_in_pocket
- // @namespace undegro
- // @include https://getpocket.com/*
- // @version 4.4
- // @license MIT
- // @description just open direct!
- // ==/UserScript==
- {
- const parent = document.getElementById("__next")
- const observeParent = new MutationObserver(records => records.filter(record => record.addedNodes[0]).some(record => record.target.tagName == "MAIN" || (record.target == parent && record.addedNodes[0].querySelector("main"))) && init())
- const observeArticle = new MutationObserver(records => records.flatMap(record => [...record.addedNodes]).forEach(rewrite))
- observeParent.observe(parent, { childList: true, subtree: true })
- async function init() {
- observeArticle.disconnect()
- const articleList = await waitElement("main > div > div > div")
- if(articleList) observeArticle.observe(articleList, { childList: true, subtree: true })
- }
- function rewrite(target) {
- if(target.tagName == "ARTICLE") {
- target.querySelector("button[aria-label='Open Menu']").click()
- }else if(target.parentElement?.classList.contains("item-menu")){
- target.style.opacity = "0"
- target.style.pointerEvents = "none"
- const parentArticle = target.closest("article")
- parentArticle.querySelector("button[aria-label='Open Menu']").addEventListener("click", () => target.removeAttribute("style"), { once: true })
- parentArticle.getElementsByTagName("a")[0].href = decodeURIComponent(target.getElementsByTagName("a")[0].href.replace(/^https:\/\/getpocket\.com\/redirect\?url=/, ""))
- }
- }
- function waitElement(selector) {
- return new Promise((resolve) => {
- const searchElement = () => {
- const elem = document.querySelector(selector)
- if(!elem) {
- requestAnimationFrame(searchElement)
- }else{
- resolve(elem)
- }
- }
- searchElement()
- setTimeout(() => resolve(false), 5000)
- })
- }
- }