您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
sort comments by favorites
当前为
- // ==UserScript==
- // @name thread win
- // @namespace bperkins
- // @description sort comments by favorites
- // @include http://www.metafilter.com/*
- // @include http://ask.metafilter.com/*
- // @include http://metatalk.metafilter.com/*
- // @version 1.2
- // ==/UserScript==
- var savedstuff;
- var winNode;
- var unwinNode;
- var copy;
- function sortFav(a,b) {
- return (-(getFav(a)-getFav(b)));
- }
- function getFav(a)
- {
- var thing = a.getElementsByTagName("SPAN");
- if (thing.length ==0 ) {
- return 1;
- }
- thing = thing[0].getElementsByTagName("SPAN");
- if (thing.length ==0) {
- thing = a.getElementsByTagName("SPAN");
- if (thing.length ==0 ) {
- return 1;
- }
- thing =thing[0].getElementsByTagName("A");
- thing =new Array(thing[2]);
- if (thing == undefined) {
- thing= new Array();
- }
- } else {
- thing = thing[0].getElementsByTagName("SPAN");
- thing = thing[0].getElementsByTagName("A");
- }
- var fav =0;
- re = new RegExp("\\d+")
- if (thing.length > 0 &&thing[0] != undefined ) {
- var m =re.exec(thing[0].innerHTML);
- fav=m[0]
- }
- return (1*fav)+1;
- }
- function unwin () {
- copy.replaceChild(winNode,unwinNode);
- page = document.evaluate(
- "//div[@id='page']",
- document,
- null,
- XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
- null);
- for (var i = 0; i < page.snapshotLength; i++) {
- var parent=page.snapshotItem(i);
- var newstuff = parent.childNodes;
- while ( newstuff.length >0 ) {
- parent.removeChild(newstuff[0]);
- }
- for (var j = 0; j < savedstuff.length; j++) {
- parent.appendChild(savedstuff[j]);
- }
- }
- }
- function threadwin () {
- copy.replaceChild(unwinNode,winNode);
- page = document.evaluate(
- "//div[@id='page']",
- document,
- null,
- XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
- null);
- for (var i = 0; i < page.snapshotLength; i++) {
- var parent=page.snapshotItem(i);
- var stuff = parent.childNodes;
- var commentidxs = new Array;
- var comments = new Array;
- var objects = new Array ;
- savedstuff=new Array;
- var k=0;
- var favs =""
- for (var j = 0; j < stuff.length; j++) {
- if (stuff[j].nodeName.toUpperCase()=="DIV" &&
- (stuff[j].getAttribute("class") == "comments" ||
- stuff[j].getAttribute("class") == "comments bestleft"||
- stuff[j].getAttribute("class") == "comments best")) {
- commentidxs.push(j);
- comments.push(stuff[j]);
- }
- objects.push(stuff[j]);
- savedstuff.push(stuff[j]);
- }
- comments.sort(sortFav);
- for (var j = 0; j < comments.length; j++) {
- objects[commentidxs[j]]=comments[j];
- }
- while ( stuff.length >0 ) {
- parent.removeChild(stuff[0]);
- }
- for (var j = 0; j < objects.length; j++) {
- parent.appendChild(objects[j]);
- }
- }
- }
- res = document.evaluate(
- "//div[@class='copy']",
- document,
- null,
- XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
- null);
- copy=res.snapshotItem(0)
- if (copy.parentNode.id == "page" ) {
- winNode = document.createElement('a');
- winNode.innerHTML = "<small>[threadwin]</small> ";
- winNode.href ="#";
- winNode.addEventListener("click", threadwin, true);
- copy.appendChild( winNode );
- unwinNode = document.createElement('a');
- unwinNode.innerHTML = "<small>[unwin]</small>";
- unwinNode.href ="#";
- unwinNode.addEventListener("click", unwin, true);
- }