您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Some minor tweaks to help enable and preserve reader mode on Space Battles.
// ==UserScript== // @name SpaceBattles Reader Mode // @namespace ultrabenosaurus.SpaceBattles // @version 1.2 // @description Some minor tweaks to help enable and preserve reader mode on Space Battles. // @author Ultrabenosaurus // @license GNU AGPLv3 // @source https://greasyfork.org/en/users/437117-ultrabenosaurus?sort=name // @match https://forums.spacebattles.com/threads/* // @icon https://www.google.com/s2/favicons?sz=64&domain=spacebattles.com // @grant none // ==/UserScript== (function() { 'use strict'; var _chapterPosts = document.querySelectorAll('article.hasThreadmark'); if( 0 != _chapterPosts.length ) { _chapterPosts.forEach( function( _post, _i, _chaps ) { var _postID = _post.getAttribute('data-content'); if( "reader" == document.location.href.split('/')[5] || "reader" == document.location.href.split('/')[6] ) { // if in reader mode, fix post number links UBfixReaderPostLinks( _postID, _post.querySelectorAll( 'div.message-inner header.message-attribution ul.message-attribution-opposite li:has(a[aria-label="Share"])+li > a' ) ); } else { // if not in reader mode, bring button up to top of chapter where it's actually useful var _btn = document.querySelector('article#js-' + _postID + ' div.message-cell li.reader a.threadmark-control'); document.querySelector( 'article#js-' + _postID + ' div.message-cell span.primary:has(span.threadmarkLabel)' ).insertAdjacentHTML( "afterend", _btn.outerHTML.replace( _btn.href.split('#')[1], _postID ) ); } }); window.addEventListener('scroll', UBupdateLocationAnchor); } })(); function UBfixReaderPostLinks( _postID, _postLinks ) { _postLinks.forEach( function( _link, _i, _posts ) { _link.setAttribute( 'href', document.location.href.split('#')[0] + '#' + _postID ); }); } function UBupdateLocationAnchor(){ if( history.pushState ) { var _chapterPosts = document.querySelectorAll('article.hasThreadmark'); if( 0 != _chapterPosts.length ) { // if browser has 'history.pushState' and page has chapters, loop them to check position _chapterPosts.forEach( function( _post, _i, _chaps ) { if( 50 > _post.getBoundingClientRect().top && 50 < _post.getBoundingClientRect().bottom ){ //console.log( _post.getBoundingClientRect() ); if( _post.getAttribute( 'id' ) != 'js-' + document.location.hash.substr( 1 ) ) { // if current chapter is at or past the top of the screen, update page title and history state var _title = document.querySelector( 'h1.p-title-value' ).innerHTML.trim() + " - " + _post.querySelector( 'div.message-cell span.primary span.threadmarkLabel' ).innerHTML.trim(); //console.log( _post.getAttribute( 'id' ).replace( 'js-', '' ), _title ); document.title = _title; history.pushState( {}, _title, '#' + _post.getAttribute( 'id' ).replace( 'js-', '' ) ); } else { return; } } }); } } }