您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Add links to first and last chapter to AO3.
当前为
// ==UserScript== // @name AO3: Links to First and Last Chapter // @namespace http://greasyfork.icu/en/users/163551-vannius // @version 1.0 // @description Add links to first and last chapter to AO3. // @author Vannius // @match http*://archiveofourown.org/works/* // @exclude http*://archiveofourown.org/works/*view_full_work=true // @grant none // ==/UserScript== (function() { // selectedTag exists only when there are several chapters. const selectedTag = document.getElementById('selected_id'); if (!selectedTag) return; // Make hrefs to first and last chapter. const firstHref = window.location.href.split('/').slice(0, 6).join('/') + '/' + selectedTag.children[0].value; const lastHref = window.location.href.split('/').slice(0, 6).join('/') + '/' + selectedTag.children[selectedTag.children.length - 1].value; // Search location to add new link tags. const chapterIndexTag = document.getElementById('chapter_index').parentElement; const prevTags = chapterIndexTag.parentElement.getElementsByClassName('previous'); const nextTags = chapterIndexTag.parentElement.getElementsByClassName('next'); const navigationTags = document.getElementById('feedback').getElementsByClassName('actions'); // When '← Previous Chapter' exists if (prevTags.length){ // When '← Previous Chapter' != first chapter if(prevTags[0].firstChild.href != firstHref){ // Make a link tag to frist chapter const firstLiTag = document.createElement('li'); firstLiTag.className = 'chapter first'; const firstATag = document.createElement('a'); firstATag.href = firstHref; firstATag.appendChild(document.createTextNode('«')); firstLiTag.appendChild(firstATag); // Add the link tag to page's top prevTags[0].parentElement.insertBefore(firstLiTag.cloneNode(true), prevTags[0]); // Add the link tag to page's end for (let i=0; i<navigationTags[0].children.length; i++){ if (navigationTags[0].children[i].firstChild.textContent.search(/Previous/) != -1){ navigationTags[0].insertBefore(firstLiTag, navigationTags[0].children[i]); break; } } } } // When 'Next Chapter →' exists if (nextTags.length){ // When 'Next Chapter →' isn't last chapter if(nextTags[0].firstChild.href != lastHref){ // Make a link tag to last chapter const lastLiTag = document.createElement('li'); lastLiTag.className = 'chapter last'; const lastATag = document.createElement('a'); lastATag.href = lastHref; lastATag.appendChild(document.createTextNode('»')); lastLiTag.appendChild(lastATag); // Add the link tag to page's top nextTags[0].parentElement.insertBefore(lastLiTag.cloneNode(true), nextTags[0].nextElementSibling); // Add the link tag to page's end for (let i=0; i<navigationTags[0].children.length - 1; i++){ if (navigationTags[0].children[i].firstChild.textContent.search(/Next/) != -1){ navigationTags[0].insertBefore(lastLiTag, navigationTags[0].children[i + 1]); break; } } } } })();