您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Provides HTML editing.
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/31226/204775/Editor.js
/** * @Anthony Pizzimenti * @desc Class containing useful style manipulation methods. * @constructor */ function Editor () { } /** * @Anthony Pizzimenti * @desc Object wrapper for styling functions. */ Editor.prototype.style = {}; /** * @author Anthony Pizzimenti * @desc Changes the font style attributes of a given list of DOM nodes. * * @param {NodeList} context NodeList of DOM nodes to be modified. Usually consists of rows. * @param {string} [family="Comic Sans"] Desired font families. * @param {number} [size=12] Desired font size. * @param {string} [weight=""] Desired font weight. * @returns {undefined} * * @this Editor */ Editor.prototype.style.font = function (context, family, size, weight) { var i, text; if (!_paramExist(family, "string")) { family = "Comic Sans"; } if (!_paramExist(size, "number")) { size = 12; } if (!_paramExist(weight, "string")) { weight = ""; } // modify text properties with defaults for (i = 0; i < context.length; i++) { text = context[i]; text.style.fontFamily = family; text.style.fontSize = size.toString() + "pt"; text.style.fontWeight = weight; } }; /** * @author Anthony Pizzimenti * @param {NodeList} subtext NodeList of DOM nodes to be modified. * @param {number} [height=""] Desired height. * @returns {undefined} * * @this Editor */ Editor.prototype.style.height = function (subtext, height) { var i; if (!_paramExist(height, "number")) { height = ""; } for (i = 0; i < subtext.length; i++) { subtext[i].style.height = height.toString() + "px"; } }; /** * @author Anthony Pizzimenti * @desc Wrapper object for removeFirst. * * @this Editor */ Editor.prototype.removeFirst = {}; /** * @author Anthony Pizzimenti * @desc Removes first DOM node's parent in class family. * @param {NodeList} list List of DOM nodes. * @param {string} classname Family that contains element to be deleted. * @returns {undefined} * * @this Editor */ Editor.prototype.removeFirst.parent = function (list, classname) { if (_paramExist(classname, "string")) { list.getElementsByClassName(classname)[0].parentNode.remove(); } else { console.error("Invalid class name provided."); } }; /** * @author Anthony Pizzimenti * @desc Removes first DOM node in class family. * @param {NodeList} list List of DOM nodes. * @param {string} classname Family that contains element to be deleted. * @returns {undefined} * * @this Editor */ Editor.prototype.removeFirst.byClass = function (list, classname) { if (_paramExist(classname, "string")) { list.getElementsByClassName(classname)[0].remove(); } else { console.error("Invalid class name provided."); } }; /** * @author Anthony Pizzimenti * @desc Removes first DOM node in tag family. * @param {NodeList} list List of DOM nodes. * @param {string} tagname Family that contains element to be deleted. * @returns {undefined} * * @this Editor */ Editor.prototype.removeFirst.byTag = function (list, tagname) { if (_paramExist(tagname, "string")) { list.getElementsByTagName(tagname)[0].remove(); } else { console.error("Invalid tag name provided."); } }; /** * @author Anthony Pizzimenti * @desc Wrapper object for links. */ Editor.prototype.links = {}; /** * @author Anthony Pizzimenti * @desc Changes all relative links to absolute ones. * @param {NodeList} list List of DOM nodes. * @param {NodeList} subtext NodeList of DOM nodes. * @param {string} url Root to join paths with. * @returns {undefined} * * @this Editor */ Editor.prototype.links.absolute = function (list, subtext, url) { var regpath_hide = /hide\?./, regpath = /item\?.|user\?./, regurl = /\//, link, links, i, j; if (!_paramExist(url, "string")) { console.error("URL provided is invalid."); return; } for (i = 0; i < subtext.length; i++) { links = subtext[i].getElementsByTagName("a"); // check for regex matches on hiding and item links for (j = 0; j < links.length; j++) { if (regpath_hide.test(links[j].href)) { links[j].remove(); } } } // check for links everywhere else links = list.getElementsByTagName("a"); for (i = 0; i < links.length; i++) { link = links[i].href.split(regurl)[3]; if (regpath.test(link)) { links[i].href = absurl(url, link); } } }; /** * @author Anthony Pizzimenti * @desc Sets all links' targets to be blank so they open on a new page. * @param {NodeList} subtext NodeList of DOM nodes containing links. * @returns {undefined} * * @this Editor */ Editor.prototype.links.blank = function (subtext) { var i; // set links so they open a new tab for (i = 0; i < subtext.length; i++) { subtext[i].target = "_blank"; } };