屏蔽 VXNA 不想看到的数据源

153 天前
 Track13

有些大博客大量内容就几十个字,或者贴段代码自嗨。

不想被这些数据源刷屏,所以写了这个脚本。应该,也许,没有大问题吧?

// ==UserScript==
// @name         vxna_blacklist
// @namespace    http://tampermonkey.net/
// @version      2024-06-20
// @description  try to take over the world!
// @author       You
// @match        https://v2ex.com/xna*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function() {
  'use strict';
  const vxna_blacklist = JSON.parse(localStorage.getItem("vxna_blacklist")) || [];
  let init = false;
  const handle = () => {
    document
      .querySelectorAll(".xna-entry.cell .xna-entry-source .node")
      .forEach((el) => {
        if (vxna_blacklist.includes(el.text)) {
          el.closest(".xna-entry.cell").style.display = "none";
        } else {
          if (init) return;
          const fragment = document.createDocumentFragment();
          const span1 = document.createElement("span");
          const span2 = document.createElement("span");
          span1.className = "fade";
          span2.className = "fade black";
          span1.innerHTML = " • ";
          span2.innerHTML = " 屏蔽 ";
          span2.setAttribute("data-name", el.text);
          fragment.appendChild(span1);
          fragment.appendChild(span2);
          el.closest("div").appendChild(fragment);
        }
      });
    init = true;
  };
  handle();
  document.querySelector("#Main>.box").addEventListener("click", (e) => {
    const target = e.target;
    if (!target) return;
    if (target.className === "fade black") {
      vxna_blacklist.unshift(target.getAttribute("data-name"));
      localStorage.setItem("vxna_blacklist", JSON.stringify(vxna_blacklist));
      handle();
    }
  });
})();
1072 次点击
所在节点    VXNA
6 条回复
InDom
153 天前
虽然名字也不会变,但是屏蔽规则记录 href 比 text 更可靠吧?
maladaxia
153 天前
误操作之后太难恢复了
建议使用

// @grant GM_setValue
// @grant GM_getValue
Track13
153 天前
@maladaxia 确实是个问题,后面有时间再加个 ui 管理黑名单吧。
maladaxia
153 天前
使用官方的这个存储接口, tampermonkey 自带存储界面, 省事不少
Track13
152 天前
@maladaxia tampermonkey 自带存储界面???你是说自定义菜单? tampermonkey 我不熟,麻烦说详细点。
Livid
126 天前
比如哪个源会需要用到这个功能?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1051355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX