您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Only quote the text selected by your cursor.
当前为
// ==UserScript== // @name Selective Quote - Idea by Vegas // @author Hash G. // @description Only quote the text selected by your cursor. // @namespace HF // @include *hackforums.net/showthread.php?tid=* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js // @version 0.21 // @grant GM_getValue // @grant GM_setValue // ==/UserScript== window.onload = function() { settings = GM_getValue("settings", 0); $(".post_management_buttons.float_right").each(function(e) { $(this).prepend("<a class='bitButton' data-nb="+e+" title='Quote selected text' href='javascript:void(0);' rel='nofollow' id='selectiveQuote'>Quote selected text</a> "); }); $("body").append("<div id='popup_SQSettings' style='background-color: #333333; bottom: auto; border: 1px solid rgb(0, 0, 0); height: 20%; left: 182px; margin: 0px; max-height: 95%; max-width: 95%; opacity: 1; padding: 0px; position: fixed; right: auto; top: 128px; width: 75%; display: none;'><h4>Selective Quote Settings</h4><br><input type='radio' data-input='0' name='settings'>Open in the full editor<br><input type='radio' data-input='1' name='settings'>Add to your message<br><input type='radio' data-input='2' name='settings'>Add to your message and scroll<br><br><button class='bitButton' id='SQClose'>Close</button> <button class='bitButton' id='SQSaveSettings'>Save</button></div>"); $(".post_management_buttons.float_right a[title*='Quote selected']").on("click", function() { quote = parseText(getSelectionText()); if (quote === "" || quote.length == 0 || !quote) { callSettings(settings); } else { name = $(this).parent().parent().parent().parent().find(".post_author strong span[class*='group']").html(); pid = $(this).parent().find("a[href*='newreply.php?tid=']").attr("href").substr(33); if (settings == 0) { $("#message").html("[quote="+name+" pid="+pid+"]\n"+quote+"\n\n[/quote]"); $("input.button:nth-child(2)").click(); } else if (settings == 1) { $("#message").html("[quote="+name+" pid="+pid+"]\n"+quote+"\n\n[/quote]"); } else if (settings == 2) { $("#message").html("[quote="+name+" pid="+pid+"]\n"+quote+"\n\n[/quote]"); window.scrollTo(0,document.body.scrollHeight); } } }); $("#SQClose").on("click", function() { $("#popup_SQSettings").css("display", "none"); }); $("#SQSaveSettings").on("click", function() { GM_setValue("settings", $("#popup_SQSettings input:checked").attr("data-input")); $("#popup_SQSettings").css("display", "none"); }); function getSelectionText() { var sel = unsafeWindow.getSelection(); if (sel.rangeCount) { var container = document.createElement("div"); for (var i = 0, len = sel.rangeCount; i < len; ++i) { container.appendChild(sel.getRangeAt(i).cloneContents()); } text = container.innerHTML; } return text; } function callSettings(settings) { $("#popup_SQSettings").css("display", "block"); if (settings == 0) { $("#popup_SQSettings input[data-input=0]").attr("checked", "checked"); } else if (settings == 1) { $("#popup_SQSettings input[data-input=1]").attr("checked", "checked"); } else if (settings == 2) { $("#popup_SQSettings input[data-input=2]").attr("checked", "checked"); } } function parseText(quote) { for (var i = 0; i < 5; i++) { quote = quote.replace(/<span style="text-decoration: underline;">(.*?[\S\s]*?)<\/span>/ig, '[u]$1[/u]'); quote = quote.replace(/<span style="font-weight: bold;">(.*?[\S\s]*?)<\/span>/ig, '[b]$1[/b]'); quote = quote.replace(/<span style="font-style: italic;">(.*?[\S\s]*?)<\/span>/ig, '[i]$1[/i]'); quote = quote.replace(/<span style="color: (.*?);">(.*?[\S\s]*?)<\/span>/ig, '[color=$1]$2[/color]'); quote = quote.replace(/<div style="text-align: (.*?);">(.*?[\S\s]*?)<\/div>/ig, '[align=$1]$2[/align]'); quote = quote.replace(/<ol type="1">(.*?[\S\s]*?)<\/ol>/ig, '[list=1]$1[/list]'); quote = quote.replace(/<ul>(.*?[\S\s]*?)<\/ul>/ig, '[list]$1[/list]'); quote = quote.replace(/<li>(.*?[\S\s]*?)<\/li>/ig, '[*]$1'); quote = quote.replace('<a href="javascript:void(0);" onclick="javascript:if(parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display==\'block\'){parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display=\'none\';this.innerHTML=\'(Click to View)\';}else {parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display=\'block\';this.innerHTML=\'(Click to Hide)\';}">(Click to Hide)<\/a>', ''); quote = quote.replace(/<div><div class="spoiler_header">(.*?[\S\s]*?)<\/div><div class="spoiler_body" style="display: block;">(.*?[\S\s]*?)<\/div><\/div>/ig, '[sp=$1]$2[/sp]'); quote = quote.replace(/<a href="(.*?)" target="_blank">(.*?[\S\s]*?)<\/a>/ig, '[url=$1]$2[/url]'); quote = quote.replace(/<img src="(.*?)" alt="(.*?)" border="0">/ig, '[img]$1[/img]'); quote = quote.replace(/<span style="font-family: (.*?);">(.*?[\S\s]*?)<\/span>/ig, '[font=$1]$2[/font]'); quote = quote.replace(/<span style="font-size: (.*?);">(.*?[\S\s]*?)<\/span>/ig, '[size=$1]$2[/size]'); quote = quote.replace(/<br>/ig, ''); quote = quote.replace(/<hr>/ig, '[hr]'); quote = quote.replace(/<hr>/ig, '[hr]'); } return quote; } }