您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds the ability to alphabetically sort editions and changes "separate" links so you can open them in a new window/tab.
- // ==UserScript==
- // @name LibraryThing Sort and Re-link on Combine/Separate Pages
- // @namespace https://gf.qytechs.cn/en/users/14131-brightcopy-edited
- // @description Adds the ability to alphabetically sort editions and changes "separate" links so you can open them in a new window/tab.
- // @include http://*.librarything.tld/combine.php*
- // @include http://*.librarything.tld/work/*/editions*
- // @include http://*.librarything.com/combine.php*
- // @include http://*.librarything.com/work/*/editions*
- // @license Public Domain
- // @version 2
- // @grant none
- // ==/UserScript==
- var TEXT_ASCENDING = '(sort ascending)';
- var TEXT_DESCENDING = '(sort descending)';
- var sepLinks = document.querySelectorAll('a[onclick^="c_sw"]');
- for (var i = 0; i < sepLinks.length; i++) {
- var elem = sepLinks[i];
- var onclick = elem.getAttribute('onclick');
- var href = onclick.replace(
- /c_sw\((\d+), *(\d+)\)/, '/work_separate.php?book=$1&work=$2');
- elem.removeAttribute('onclick');
- elem.setAttribute('href', href);
- // this prevents the combination page from checking the checkbox
- // when we simply clicked on separate
- addEvent(elem, 'click', separateClick, false);
- }
- function separateClick(e) {
- stopBubbling(e);
- return false;
- }
- var elems = document.getElementsByClassName("combinetable")[0].getElementsByTagName("h2");
- for (var j = 0; j < elems.length; j++) {
- var elem = elems[j];
- var parent = elem.parentNode;
- var span = document.createElement('span');
- span.setAttribute('style', 'float:right');
- span.className = 'smaller';
- var a = document.createElement('a');
- a.appendChild(document.createTextNode(TEXT_ASCENDING));
- addEvent(a, 'click', sortClick, false);
- span.appendChild(document.createTextNode(' '));
- span.appendChild(a);
- elem.appendChild(span)
- // this is for the editions page
- if (elem.nodeName == 'TD')
- break;
- }
- function sortClick(e) {
- stopBubbling(e);
- var a = getTarget(e);
- var node =
- // this is editions
- a.parentNode.parentNode.nodeName == 'TD'
- ? document.getElementById('editions')
- : a.parentNode.parentNode.parentNode;
- if (getTextContent(a) == TEXT_ASCENDING) {
- sortElems(node, compareNodesAscending);
- setTextContent(a, TEXT_DESCENDING);
- }
- else {
- sortElems(node, compareNodesDescending);
- setTextContent(a, TEXT_ASCENDING);
- }
- }
- function compareNodesAscending(node1, node2) {
- if (node1.istr < node2.istr)
- return -1
- else if (node1.istr > node2.istr)
- return 1
- else if (node1.str < node2.str)
- return -1
- else if (node1.str > node2.str)
- return 1
- else
- return 0;
- }
- function compareNodesDescending(node1, node2) {
- return compareNodesAscending(node2, node1);
- }
- function sortElems(item, compare) {
- var ps = [];
- var step = item.nodeName == 'TD' ? 1 : 3;
- for (var i = 0; i < item.childNodes.length; i += step) {
- var node = item.childNodes[i];
- if (step == 1 && node.nodeName == 'P' && node.hasChildNodes()
- || step == 3 && node.nodeName == '#text') {
- var txt = node.textContent.replace(/ +/g, ' ')
- .replace(/[\s\/.,"'?!;:#$%&()*+<>=@\^_{}~`|[\]-]+/g, '');
- ps.push({
- node:node,
- str:txt,
- istr:txt.toLowerCase()
- });
- }
- }
- ps.sort(compare);
- for (i = 0; i < ps.length; i++) {
- var nodes = [ps[i].node];
- if (step == 3) {
- nodes.push(nodes[0].nextSibling);
- nodes.push(nodes[1].nextSibling);
- }
- var parent = nodes[0].parentNode;
- for (var j = 0; j < nodes.length; j++) {
- parent.removeChild(nodes[j]);
- parent.appendChild(nodes[j]);
- }
- }
- }
- function addEvent(node, eventType, callback, useCapture) {
- if (node.addEventListener) {
- node.addEventListener(eventType, callback, useCapture);
- return true;
- }
- else if (node.attachEvent)
- return node.attachEvent('on' + eventType, callback);
- else
- node['on' + eventType] = callback;
- }
- function getTarget(e) {
- if (!e)
- var e = window.event;
- var targ;
- if (e.target)
- targ = e.target;
- else if (e.srcElement)
- targ = e.srcElement;
- if (targ.nodeType == 3) // defeat Safari bug
- targ = targ.parentNode;
- return targ;
- }
- function stopBubbling(e) {
- if (!e)
- e = window.event;
- e.cancelBubble = true;
- if (e.stopPropagation)
- e.stopPropagation();
- }
- function setTextContent(node, text) {
- if (node.innerText)
- node.innerText = text
- else if (node.textContent)
- node.textContent = text;
- }
- function getTextContent(node, text) {
- return node.innerText || node.textContent;
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址