您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
show MetaFilter profile pictures next to names in posts and comments
当前为
// picMF.user.js // // Written by: Michael Devore // Released to the public domain // // This is a Greasemonkey script. // See http://www.greasespot.net/ for more information on Greasemonkey. // // ==UserScript== // @name picMF // @namespace http://www.devoresoftware.com/gm/picMF // @description show MetaFilter profile pictures next to names in posts and comments // @match https://*.metafilter.com/* // @match http://*.metafilter.com/* // @grant GM_xmlhttpRequest // @run-at document-end // @version 1.0 // ==/UserScript== // "use strict"; var theWidth = "64px"; var theHeight = "64px"; var zoomWidth = "256px"; var zoomHeight = "256px"; var serverPrefix = "//s3-us-west-2.amazonaws.com/mefi.profile/"; function onLoaded() { var xpath = "//DIV/SPAN[starts-with(text(),'posted by') and (@class='smallcopy' or @class='smallcopy postbyline')]"; var postNodes = document.evaluate( xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); var total = postNodes.snapshotLength; for (var i = 0; i < total; i++) { // not much validation here, cuts performance overhead by avoiding extra tests against the nodes // tighten it down later if it conflicts with other add-ons or Metafilter bling var userSpan = postNodes.snapshotItem(i); var currentNode = userSpan.firstChild; var found = false; var userLink; var linkNode; while (currentNode && !found) { if (currentNode.nodeName === "A") { var href_value = currentNode.getAttribute('href'); var result = href_value.match(/\/user\/(\d+)/); if (result && result[1]) { var userNumber = result[1]; var serverLink = serverPrefix+userNumber+".jpg"; var img = document.createElement("img"); img.setAttribute("src", serverLink); setTimeout(function(x, y) { return function() { if (x.height > 0) { x.setAttribute("height", theHeight); x.setAttribute("width", theWidth); y.insertBefore(document.createTextNode(" "), y.firstChild); y.insertBefore(x, y.firstChild); x.addEventListener('mouseover', picHover, false); x.addEventListener('mouseout', picRestore, false); } }; }(img, currentNode), 1000); break; } } currentNode = currentNode.nextSibling; } } } function picHover(evt) { var picNode = evt['target']; picNode.setAttribute("height", zoomHeight); picNode.setAttribute("width", zoomWidth); } function picRestore(evt) { var picNode = evt['target']; picNode.setAttribute("height", theHeight); picNode.setAttribute("width", theWidth); } document.addEventListener('DOMContentLoaded',onLoaded,true);