您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Puts a "Direct Link to Prompt" button on each prompt of an AO3 Prompt Meme.
// ==UserScript== // @name Direct Prompt Link Button // @namespace https://greasyfork.org // @version 1.1 // @description Puts a "Direct Link to Prompt" button on each prompt of an AO3 Prompt Meme. // @author merelydovely // @license Creative Commons // @match http://archiveofourown.org/*/requests* // @match https://archiveofourown.org/*/requests* // @run-at document-idle // @grant none // ==/UserScript== (function() { const buttonPacks = document.querySelectorAll("li.blurb.group ul.actions") //grabs all the unordered lists (packs of buttons) at the bottom of the prompt blurbs as a nodelist //console.log(buttonPacks); function addButton(thisPack) { if (thisPack.querySelector("form.button_to") == null) { return; //checks to see if there IS a claim button and skips this prompt blurb if there isn't one } else { let thisForm = thisPack.querySelector("form.button_to") //looks at the claim form of this specific prompt blurb and puts it in a variable let claimLink = new URL(thisForm.action, "https://archiveofourown.org"); //gets the realtive URL from the 'action' part of the claim form in the variable above (and puts the AO3 domain at the front for good measure) console.log(claimLink); let promptID = claimLink.searchParams.get("prompt_id"); //gets the prompt ID from the URL in the claim form 'action' //console.log(promptID); let promptLink = "prompts/"+promptID; //concatenates the prompt ID to the correct relative address for prompt pages let promptLinkCode = '<li><a href="'+promptLink+'">Link to prompt</a></li>' //create the HTML for a new button that links to the prompt page //console.log(promptLinkCode); thisPack.insertAdjacentHTML("beforeend", promptLinkCode); //put the HTML for the new button in at the end of this button pack on this prompt, as the final <li> inside the <ul> } }; buttonPacks.forEach(addButton); //loop over every button pack in the buttonPacks nodelist and add a Link to Prompt button into each one })()