open_original_links_in_pocket

just open direct!

目前为 2021-02-06 提交的版本。查看 最新版本

// ==UserScript==
// @name        open_original_links_in_pocket
// @namespace   undegro
// @include     https://getpocket.com/*
// @version     4.1
// @license     MIT
// @description just open direct!
// ==/UserScript==

{
  const observeParent = new MutationObserver(records => records.some(record => [...record.removedNodes].includes(articleListElem)) && init())
  let articleListElem

  init()

  function init() {
    observeParent.disconnect()
    waitElement("main > div > div > div").then(elem => {
      const mo = new MutationObserver(records => records.flatMap(record => [...record.addedNodes]).forEach(rewrite))
      articleListElem = elem.closest("main > div")
      observeParent.observe(elem.closest("main"), { childList: true })
      mo.observe(elem, { 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.getElementsByTagName("a")[0].href = decodeURIComponent(target.getElementsByTagName("a")[0].href.replace(/^https:\/\/getpocket\.com\/redirect\?url=/, ""))
    }
  }

  function waitElement(selector) {
    return new Promise((resolve, reject) => {
      const searchElement = () => {
        const elem = document.querySelector(selector)
        if(!elem) {
          requestAnimationFrame(searchElement)
        }else{
          resolve(elem)
        }
      }

      searchElement()
      setTimeout(() => reject("timeout"), 5000)
    })
  }
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址