您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds links to 'Who posted in' lists and posts that generate all posts by that user in the thread.
- // ==UserScript==
- // @name IP.Board - Isolate Posts by User
- // @namespace Makaze
- // @include *
- // @grant none
- // @version 1.0.9
- // @description Adds links to 'Who posted in' lists and posts that generate all posts by that user in the thread.
- // ==/UserScript==
- var thisViews,
- thisLink,
- thisThreadInList,
- threadNameInList,
- thisThreadInThread,
- threadNameInThread,
- authorInThread,
- listOnPage,
- thisThreadOnPage,
- threadNameOnPage,
- usersOnPage,
- authorOnPage,
- thisUser,
- usersPosts,
- posts,
- threads,
- newLink,
- i = 0;
- // Classes constructor
- function ClassHandler() {
- var self = this;
- this.classList = function(elem) {
- return elem.className.trim().split(/[\b\s]/);
- };
- this.hasClass = function(elem, className) {
- var classes = self.classList(elem),
- has = false,
- i = 0;
- for (i = 0; i < classes.length; i++) {
- if (classes[i] === className) {
- has = true;
- break;
- }
- }
- return (has);
- };
- this.addClass = function(elem, className) {
- var classes;
- if (!self.hasClass(elem, className)) {
- classes = self.classList(elem);
- classes.push(className);
- elem.className = classes.join(' ').trim();
- }
- return self;
- };
- this.removeClass = function(elem, className) {
- var classes = self.classList(elem),
- i = 0;
- for (i = 0; i < classes.length; i++) {
- if (classes[i] === className) {
- classes.splice(i, 1);
- }
- }
- elem.className = classes.join(' ').trim();
- return self;
- };
- this.toggleClass = function(elem, className) {
- var classes;
- if (self.hasClass(elem, className)) {
- self.removeClass(elem, className);
- } else {
- classes = self.classList(elem);
- classes.push(className);
- elem.className = classes.join(' ').trim();
- }
- return self;
- };
- }
- // Initialize
- var Classes = new ClassHandler();
- // End Classes constructor
- function empty(listOnPage) {
- while (listOnPage.hasChildNodes()) {
- listOnPage.removeChild(listOnPage.lastChild);
- }
- }
- function createElement(type, callback) {
- var element = document.createElement(type);
- callback(element);
- return element;
- }
- function createIsoOnPost(author, threadName, thread) {
- return createElement('span', function(span) {
- span.className = 'right ipsType_small desc blend_links';
- span.style.marginRight = '7px';
- span.appendChild(createElement('a', function(link) {
- link.title = 'View all posts by ' + author + ' in ' + threadName;
- link.href =
- window.location.protocol
- + '//'
- + window.location.hostname
- + window.location.pathname
- + '?app=core&module=search&do=search&cType=topic&cId='
- + thread
- + '&search_author='
- + author;
- link.appendChild(document.createTextNode('All'));
- }));
- });
- }
- function createIsoOnWho(author, threadName, thread, postsElem) {
- return createElement('a', function(link) {
- link.title = 'View all posts by ' + author + ' in ' + threadName;
- link.href =
- window.location.protocol
- + '//'
- + window.location.hostname
- + window.location.pathname
- + '?app=core&module=search&do=search&cType=topic&cId='
- + thread
- + '&search_author='
- + author;
- link.appendChild(document.createTextNode(postsElem.textContent + ' (View)'));
- });
- }
- var generateLinks = function(event) {
- var listOnPage = event.target,
- users,
- author,
- thisUser,
- usersPosts,
- i = 0;
- if (!listOnPage.className || !Classes.hasClass(listOnPage, 'fixed_inner')) {
- return false;
- }
- threadNameInList = listOnPage.parentNode.getElementsByTagName('h3')[0].textContent.split('Who posted in: ')[1];
- users = listOnPage.getElementsByTagName('tr');
- for (i = 0; i < users.length; i++) {
- thisUser = users[i];
- if (!Classes.hasClass(users[i], 'header')) {
- author = thisUser.getElementsByTagName('td')[0].textContent.trim();
- usersPosts = thisUser.getElementsByTagName('td')[1];
- usersPosts.className = 'blend_links';
- newLink = createIsoOnWho(author, threadNameInList, thisThreadInList, usersPosts);
- empty(usersPosts);
- usersPosts.appendChild(newLink);
- }
- }
- document.removeEventListener('DOMNodeInserted', generateLinks, false);
- };
- var generateLinksInit = function(event) {
- thisThreadInList = event.target.href.match(/t=(\d+)/)[1];
- document.addEventListener('DOMNodeInserted', generateLinks, false);
- };
- if (document.body.id === 'ipboard_body') {
- if (document.getElementsByClassName('__topic')[0] != null) {
- for (i = 0, threads = document.getElementsByClassName('__topic'); i < threads.length; i++) {
- thisViews = threads[i].getElementsByClassName('col_f_views')[0];
- thisLink = thisViews.getElementsByTagName('a')[0];
- if (thisLink != null) {
- thisLink.addEventListener('click', generateLinksInit, false);
- }
- }
- }
- if (document.getElementsByClassName('post_id')[0] != null) {
- for (i = 0, posts = document.getElementsByClassName('post_id'); i < posts.length; i++) {
- if (posts[i].getElementsByTagName('a')[0].href.match(/\/topic\//)) {
- thisThreadInThread = posts[i].getElementsByTagName('a')[0].href.match(/\/topic\/(\d+)/)[1];
- } else {
- thisThreadInThread = posts[i].getElementsByTagName('a')[0].href.match(/showtopic=(\d+)/)[1];
- }
- threadNameInThread = posts[i].getElementsByTagName('a')[0].title.split(': post #')[0];
- authorInThread = posts[i].parentNode.parentNode.getElementsByClassName('author')[0].textContent.trim();
- posts[i].parentNode.appendChild(createIsoOnPost(authorInThread, threadNameInThread, thisThreadInThread));
- }
- }
- if (window.location.href.match('do=who')) {
- listOnPage = document.getElementsByClassName('fixed_inner')[0];
- thisThreadOnPage = window.location.href.match(/t=(\d+)/)[1];
- threadNameOnPage = listOnPage.parentNode.getElementsByTagName('h3')[0].textContent.split('Who posted in: ')[1];
- usersOnPage = listOnPage.getElementsByTagName('tr');
- for (i = 0; i < usersOnPage.length; i++) {
- thisUser = usersOnPage[i];
- if (!Classes.hasClass(thisUser, 'header')) {
- authorOnPage = thisUser.getElementsByTagName('td')[0].textContent.trim();
- usersPosts = thisUser.getElementsByTagName('td')[1];
- usersPosts.className = 'blend_links';
- newLink = createIsoOnWho(authorOnPage, threadNameOnPage, thisThreadOnPage, usersPosts);
- empty(usersPosts);
- usersPosts.appendChild(newLink);
- }
- }
- }
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址