您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add the "add spoiler" button in the right click menu
// ==UserScript== // @name Add spoiler tag for PSE // @description Add the "add spoiler" button in the right click menu // @version 1 // @author Lord of dark // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js // @include http://puzzling.stackexchange.com/* // @namespace https://greasyfork.runtimutd.eu.org/users/49190 // ==/UserScript== this.$ = this.jQuery = jQuery.noConflict(true); // use jquery has no conflict if (!("contextMenu" in document.documentElement && "HTMLMenuItemElement" in window)) return; var body = document.body; body.addEventListener("contextmenu", initMenu, false); var menu = body.appendChild(document.createElement("menu")); menu.outerHTML = '<menu id="userscript-spoiler" type="context">\ <menuitem label="add spoiler"></menuitem>\ </menu>'; document.querySelector("#userscript-spoiler menuitem") .addEventListener("click", addspoiler, false); function initMenu(aEvent) { // Executed when user right click on web page body // aEvent.target is the element you right click on var node = aEvent.target; var item = document.querySelector("#userscript-spoiler menuitem"); if (node.localName == "textarea") { body.setAttribute("contextmenu", "userscript-spoiler"); } else { body.removeAttribute("contextmenu"); } } function addspoiler(aEvent) { var textareas = document.getElementsByTagName("textarea"); var nb = textareas.length; for (var i=0;i<nb;i++){ var textarea=textareas[i]; var len = textarea.value.length; var start = textarea.selectionStart; var end = textarea.selectionEnd; var sel = textarea.value.substring(start, end); if (sel.length>0){ // Select text and edit it var spoilered = sel.replace(/^[>! ]*/,">! "); spoilered=spoilered.replace(/ *\n[>! ]*/g, " \n>! "); // Replace the selected text with this one textarea.value = textarea.value.substring(0,start) + spoilered + textarea.value.substring(end,len); // trigger event to update the "preview" var ev = document.createEvent("KeyboardEvent"); ev.initKeyEvent("keypress", true, false, window, 0, 0, 0, 0, 13, 13); textarea.dispatchEvent(ev); break; } } }