您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
permanently hide bookmarks created by specified users
- // ==UserScript==
- // @name ao3 hide bookmarks
- // @namespace https://gf.qytechs.cn/en/users/800073-bellisk
- // @version 0.1.2
- // @description permanently hide bookmarks created by specified users
- // @author bellisk
- // @include http://archiveofourown.org/works/*/bookmarks*
- // @include https://archiveofourown.org/works/*/bookmarks*
- // @grant GM.setValue
- // @grant GM.getValue
- // @grant GM.listValues
- // @grant GM.deleteValue
- // ==/UserScript==
- const bookmarks = document.querySelectorAll('li.short');
- // interface
- let headerModule, blockLink, blockStyle;
- for (let i=0;i<bookmarks.length;i++) {
- headerModule = bookmarks[i].getElementsByClassName('header module')[0];
- blockLink = document.createElement('div');
- blockLink.className = 'bookmarkblock';
- blockLink.innerHTML = '<a class="blockThisBookmarker">block this bookmarker</a>';
- headerModule.parentNode.insertBefore(blockLink, headerModule.nextSibling);
- }
- blockStyle = document.createElement('style');
- blockStyle.innerHTML = 'div.bookmarkblock {text-align: right; font-family:monospace; margin-bottom: .375em; cursor: pointer;}';
- document.head.appendChild(blockStyle);
- let unblock = document.createElement('li');
- unblock.innerHTML = `
- <a class="dropdown-toggle" href="/menu/hide-bookmarks" data-toggle="dropdown" data-target="#">Hide Bookmarks</a>
- <ul class="menu dropdown-menu" role="menu">
- <li id="clearLast" role="menu-item"><a href="#">Unblock last</a></li>
- <li id="clearAll" role="menu-item"><a href="#">Unblock all</a></li>
- <li id="blockUsername" role="menu-item"><a href="#">Block username</a></li>
- </ul>`;
- unblock.className = 'dropdown bookmarkblock';
- let search = document.getElementsByClassName('primary navigation actions')[0].getElementsByClassName('search')[0];
- search.parentNode.insertBefore(unblock, search);
- // block bookmarks
- function getBookmarkerName(liTag) {
- const byline = liTag.getElementsByClassName('byline')[0];
- const bookmarker = byline.getElementsByTagName('a')[0];
- return bookmarker.text;
- }
- function blockThisBookmarker(bookmark) {
- const bookmarker = getBookmarkerName(bookmark);
- GM.setValue(bookmarker, bookmarker);
- GM.setValue('last', bookmarker);
- }
- async function blockSelected(bookmarks) {
- const blocked = await GM.listValues();
- for (let j=0; j<bookmarks.length; j++) {
- const bookmarker = getBookmarkerName(bookmarks[j]);
- if (blocked.find(function(id){return id === bookmarker;})) {
- bookmarks[j].style.display = 'none';
- }
- }
- }
- function blockUsername() {
- const username = prompt("Enter a username to hide all bookmarks from");
- GM.setValue(username, username);
- GM.setValue('last', username);
- location.reload();
- }
- // unblock bookmarks
- async function clearAll(){
- const keys = await GM.listValues();
- for (let k=0;k<keys.length; k++) {
- await GM.deleteValue(keys[k]);
- }
- location.reload();
- }
- async function clearLast() {
- const username = await GM.getValue('last');
- await GM.deleteValue('last');
- await GM.deleteValue(username);
- const blocked = await GM.listValues();
- GM.setValue('last', blocked[blocked.length -1]);
- location.reload();
- }
- // run
- blockSelected(bookmarks);
- document.getElementById('clearLast').onclick = function() {clearLast();};
- document.getElementById('clearAll').onclick = function() {clearAll();};
- document.getElementById('blockUsername').onclick = function() {blockUsername();};
- const blockLinks = document.getElementsByClassName('blockThisBookmarker');
- for (let k=0; k<blockLinks.length; k++) {
- let bLink = blockLinks[k];
- bLink.onclick = function() {
- let bookmark = this.parentNode.parentNode;
- blockThisBookmarker(bookmark)
- bookmark.style.display = "none";
- };
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址