您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Expand structured quotes into old-fashioned unstructured ones
// ==UserScript== // @name ExpandQuotes // @namespace forum.pravda.com.ua // @description Expand structured quotes into old-fashioned unstructured ones // @include http://forum.pravda.com.ua/index.php?topic=* // @version 1.27 // @grant none // ==/UserScript== var divs = document .getElementById('phorum') .getElementsByTagName('div'); for (var i = 0; i < divs.length; i++) { var div = divs[i]; if (div.className == 'msg') { expandQuotes(div, 115); } } function expandQuotes(element, wrapLimit) { var node = element.firstChild; while (node) { var next = node.nextSibling; if (node.className == 'quoteheader') { var quoteheader = node; do { node = node.nextSibling; } while (node.nodeName.toLowerCase() != 'blockquote'); var blockquote = node; do { node = node.nextSibling; } while (node.className != 'quotefooter'); var quotefooter = node; node = node.nextSibling; element.removeChild(quoteheader); element.removeChild(blockquote); element.removeChild(quotefooter); var who_node = quoteheader.getElementsByTagName('b'); var who = (who_node.length === 1) ? who_node[0].innerHTML : ''; var what = expandQuotes(blockquote, wrapLimit - 5); var div = document.createElement('div'); div.innerHTML = who + ' Написав:<br>-------------------------------------------------------<br>' + what; var innerNode = div.firstChild; while (innerNode) { next = innerNode.nextSibling; div.removeChild(innerNode); element.insertBefore(innerNode, node); innerNode = next; } next = node.nextSibling; } else if (node.className == 'link') { // Check if 'expand quotes' link is here element.removeChild(node); } else if (node.nodeName.toLowerCase() == 'i') { // Check if 'show images' link is here var spans = node.getElementsByTagName('span'); for (var i = 0; i < spans.length; i++) { if (spans[i].className == 'link') { element.removeChild(node); break; } } } node = next; } var elementHTML = element.innerHTML; if (element.className != 'msg') { elementHTML = quoteHtml(elementHTML, wrapLimit) + '\n'; elementHTML = elementHTML.replace(/\n/g, '<br>'); } return elementHTML; } function quoteHtml(htmlText, limit) { var text = '> ' + htmlText.trim() .replace(/>/g, '>') .replace(/\s{2,}/g, ' ') .replace(/\r?\n|\r/g, '') .replace(/<br\s*[\/]?>\s*/gi, '\n> ') .replace(/(<([^>]+)>)/ig, '') .replace(/ /ig, String.fromCharCode(160)); var lines = text.split(/\r\n|\n|\r/); if (lines.length > 0 && lines[0] == '> ') { lines.splice(0, 1); } for (i = 0; i < lines.length; i++) { var j; var line = lines[i]; lines[i] = ''; while (line.length > limit) { j = (j = line.slice(0, limit + 1) .match(/\S*(\s)?$/))[1] ? limit : j.input.length - j[0].length || limit || j.input.length + (j = line.slice(limit) .match(/^\S*/))[0].length; lines[i] += line.slice(0, j) + ((line = line.slice(j)).length ? '\n> ' : ''); } lines[i] += line; } return lines.join('\n'); }