Configure the buttons for works by hiding or rearranging their order.
目前為
// ==UserScript==
// @name [AO3] Better Work Buttons
// @namespace https://greasyfork.org/en/users/1138163-dreambones
// @version 0.6.1
// @description Configure the buttons for works by hiding or rearranging their order.
// @author DREAMBONES
// @match http*://archiveofourown.org/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=archiveofourown.org
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Configure here! Set to "true" if you want the button hidden, "false" if you want it to be seen.
var hideSubscribeWhenCompleted = true; // Only show the "Subscribe" button if a work isn't completed.
var hideTopButtons = {
"Entire Work": true,
"Previous Chapter": false,
"Next Chapter": false,
"Chapter Index": false,
"Bookmark": true,
"Mark as Read": false,
"Comments": true,
"Hide Creator's Style": true,
"Share": true,
"Subscribe": false,
"Download": false
}
var hideBottomButtons = {
"Top": true,
"Kudos": false,
"Bookmark": false,
"Mark as Read": false,
"Comments": false,
}
var topButtonPos = ["Entire Work", "Previous Chapter", "Chapter Index", "Next Chapter", "Bookmark", "Mark as Read", "Subscribe", "Comments", "Share", "Download", "Hide Creator's Style"]
var bottomButtonPos = ["Top", "Kudos", "Bookmark", "Mark as Read", "Comments"]
//Config ends here!
var topButtons = {
"Entire Work": "li.chapter.entire",
"Previous Chapter": "li.chapter.previous",
"Next Chapter": "li.chapter.next",
"Chapter Index": "li[class='chapter']",
"Bookmark": "li[class='bookmark']",
"Mark as Read": "li[class='mark']",
"Comments": "li[class='comments']",
"Hide Creator's Style": "li[class='style']",
"Share": "li[class='share']",
"Subscribe": "li[class='subscribe']",
"Download": "li[class='download']"
}
var bottomButtons = {
"Top": "li > a[href='#main']",
"Kudos": "li > form[id='new_kudo']",
"Bookmark": "li > a[href='#bookmark-form']",
"Mark as Read": "li > a[href$='mark_as_read']",
"Comments": "li > a[href^='/comments/']",
}
var domainRe = /https?:\/\/archiveofourown\.org\/works\/\d+/i
if (domainRe.test(document.URL)) {
var topRow = document.querySelector("ul.work.navigation.actions");
var bottomRow = document.querySelector("ul[class='actions'][role='navigation']");
arrangeButtons(topRow, topButtons, topButtonPos);
arrangeButtons(bottomRow, bottomButtons, bottomButtonPos);
if (hideSubscribeWhenCompleted) {
let chapters = document.querySelector("dd.chapters").innerHTML;
if (!chapters.endsWith("?")) {
let button = topRow.querySelector(topButtons.Subscribe);
button.remove();
}
}
toggleButtons(topRow, topButtons, hideTopButtons);
toggleButtons(bottomRow, bottomButtons, hideBottomButtons);
}
function arrangeButtons(obj, array, settings) {
for (let i = 0; i < (settings.length); i++) {
try {
let button = obj.querySelector(array[settings[i]]);
if (button.nodeName != "LI") { button = button.parentElement; }
obj.insertBefore(button, obj.children[i]);
}
catch (TypeError) { null; }
}
}
function toggleButtons(obj, array, settings) {
for (let key in settings) {
if (settings.hasOwnProperty(key)) {
if (settings[key] == true) {
try {
let button = obj.querySelector(array[key]);
if (button.nodeName != "LI") { button = button.parentElement; }
button.remove();
}
catch (TypeError) { null; }
}
}
}
}
})();