您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
苍雪论坛专用的扩展插件, 在发帖时快速输入自定义表情和论坛BBCODE
当前为
// ==UserScript== // @name 苍雪表情增强插件 // @namespace http://blog.eclosionstudio.com // @version 2.02 正式版 // @description 苍雪论坛专用的扩展插件, 在发帖时快速输入自定义表情和论坛BBCODE // @match http://*.9gal.com/read.php?* // @match http://9gal.com/read.php?* // @match http://9baka.com/read.php?* // @match http://*.9baka.com/read.php?* // @match http://*.9gal.com/post.php?* // @match http://9gal.com/post.php?* // @match http://9baka.com/post.php?* // @match http://*.9baka.com/post.php?* // @copyright 2014, eddie32 // ==/UserScript== /* 自定义内容*/ // 功能栏标题 var ItemTitleArray = Array ('苍雪','颜','LL小','LL大','水','AC娘','百合','百度','它'); // 链接ID, 对应, 100101开始的整数。 var loadTitleArray = Array('100101','100102','100103','100104','100105','100106','100107','100108','100109'); // 表情数组: // 1:苍雪自带 var KFSmileURL = []; var KFSmileTitle = []; var KFSmileCode = []; for(var j = 0; j < 48; j++) { KFSmileURL[j] = 'http://bbs.9gal.com/images/post/smile/em/em' + ((j)>=9?(j+1):('0'+(j+1))) + '.gif'; KFSmileTitle[j] = ''; KFSmileCode[j] = '[s:'+(j+10)+']'; } //附加gif: var KFSmile2 = []; var KFSmile2Title = []; for(var j = 0; j < 25; j++) { KFSmile2[j] = 'http://smilell1.eclosionstudio.com/EmCol/penseris/penseries' + (j+1) + '.gif'; KFSmile2Title[j] = ''; } var KFSmile3 = []; var KFSmile3Title = []; for(var j = 0; j < 54; j++) { KFSmile3[j] = 'http://smilell1.eclosionstudio.com/EmCol/penseris/bannerpenseries' + (j+1) + '.gif'; KFSmile3Title[j] = ''; } // 2: 颜文字 var emotionArray = Array("(●・ 8 ・●)", "╰(๑◕ ▽ ◕๑)╯", "(﹡ˆˆ﹡)","〜♪♪", "|∀゚", "(´゚Д゚`)", "(;´Д`)", "(`・ω・)", "(=゚ω゚)=", "| ω・´)", "|-` )", "|д` )", "|ー` )", "|∀` )", "(つд⊂)", "(゚Д゚≡゚Д゚)", "(^o^)ノ", "(|||゚Д゚)", "( ゚∀゚)", "( ´∀`)", "(*´∀`)", "(*゚∇゚)", "(*゚ー゚)", "( ゚ 3゚)", "( ´ー`)", "( ・_ゝ・)", "( ´_ゝ`)", "(*´д`)", "(・ー・)", "(・∀・)", "(ゝ∀・)", "(〃∀〃)", "(*゚∀゚*)", "( ゚∀。)", "( `д´)", "(`ε´ )", "(`ヮ´ )", "σ`∀´)", " ゚∀゚)σ", "゚ ∀゚)ノ", "(╬゚д゚)", "(|||゚д゚)", "( ゚д゚)", "Σ( ゚д゚)", "( ;゚д゚)", "( ;´д`)", "( д ) ゚ ゚", "( ☉д⊙)", "((( ゚д゚)))", "( ` ・´)", "( ´д`)", "( -д-)", "(>д<)", "・゚( ノд`゚)", "( TдT)", "( ̄∇ ̄)", "( ̄3 ̄)", "( ̄ー ̄)", "( ̄ .  ̄)", "( ̄皿 ̄)", "( ̄艸 ̄)", "( ̄︿ ̄)", "( ̄︶ ̄)", "ヾ(´ω゚`)", "(*´ω`*)", "(・ω・)", "( ´・ω)", "(`・ω)", "(´・ω・`)", "(`・ω・´)", "( `_っ´)", "( `ー´)", "( ´_っ`)", "( ´ρ`)", "( ゚ω゚)", "(o゚ω゚o)", "( ^ω^)", "(。◕∀◕。)", "/( ◕‿‿◕ )\\", "ヾ(´ε`ヾ)", "(ノ゚∀゚)ノ", "(σ゚д゚)σ", "(σ゚∀゚)σ", "|д゚ )", "┃電柱┃", "゚(つд`゚)", "゚Å゚ ) ", "⊂彡☆))д`)", "⊂彡☆))д´)", "⊂彡☆))∀`)", "(´∀((☆ミつ", "( ◜◒◝ )","(●´3`)~♪", "_(:з」∠)_","хорошо!"); // 3. lovelive专用小 var LoveliveSmalltargetURL = []; var LoveliveSmalltargetTitle = []; for(var j = 0; j < 40; j++) { LoveliveSmalltargetURL[j] = 'http://smilell2.eclosionstudio.com/Small/Lovelive2nd' + (j+1) + '.png'; LoveliveSmalltargetTitle[j] = j+1; } for(var j = 0; j < 40; j++) { LoveliveSmalltargetURL[j+40] = 'http://smilell1.eclosionstudio.com/Small/Lovelive' + (j+1) + '.png'; LoveliveSmalltargetTitle[j+40] = j+1; } // 4. lovelive专用大 var LoveliveBigtargetURL = []; var LoveliveBigtargetTitle = []; for(var j = 0; j < 40; j++) { LoveliveBigtargetURL[j] = 'http://smilell2.eclosionstudio.com/Big/Lovelive2nd' + (j+1) + '.png'; LoveliveBigtargetTitle[j] = j+1; } for(var j = 0; j < 40; j++) { LoveliveBigtargetURL[j+40] = 'http://smilell1.eclosionstudio.com/Big/Lovelive' + (j+1) + '.png'; LoveliveBigtargetTitle[j] = j+1; } // 5. 快捷输入功能 var functionEmotion = Array("[sell=1][/sell]","[quote][/quote]","[hide=1][/hide]","[code][/code]","[strike][/strike]", "[fly][/fly]","[color=#00FF00][/color]","[b][/b]","[u][/u]","[i][/i]","[hr]", "[bgcolor=][/bgcolor]"); var functionDescription = Array("出售贴sell=售价","引用", "隐藏hide=神秘等级","插入代码","删除线","跑马灯","文字颜色","粗体","下划线","斜体","水平线","背景色"); // 6. AC娘 var ACSmile3 = []; var ACSmile3Title = []; for(var j = 0; j < 50; j++) { ACSmile3[j] = 'http://smilell1.eclosionstudio.com/EmCol/ACFUN/' + (j+1) + '.png'; ACSmile3Title[j] = ''; } var ACSmile2 = []; var ACSmile2Title = []; for(var j = 0; j < 10; j++) { ACSmile2[j] = 'http://smilell1.eclosionstudio.com/EmCol/ACFUN/' + (j+51) + '.jpg'; ACSmile2Title[j] = ''; } //7. Akari 摇曳百合 var ACSmile1 = []; var ACSmile1Title = []; for(var j = 0; j < 20; j++) { ACSmile1[j] = 'http://smilell1.eclosionstudio.com/EmCol/Dynamic/akari' + (j+1) + '.gif'; ACSmile1Title[j] = ''; } var AkariSmile1 = []; var AkariSmile1Title = []; for(var j = 0; j < 71; j++) { AkariSmile1[j] = 'http://smilell1.eclosionstudio.com/EmCol/akari/akari' + (j+1) + '.png'; AkariSmile1Title[j] = ''; } // 8.百度 var BaiduSmile1 = []; var BaiduSmile1Title = []; for(var j = 0; j < 50; j++) { BaiduSmile1[j] = 'http://smilell1.eclosionstudio.com/EmCol/baidu/defaultx' + (j+1) + '.png'; BaiduSmile1Title[j] = ''; } // ACFUN new var ACSmile4 = []; var ACSmile4Title = []; for(var j = 0; j < 50; j++) { ACSmile4[j] = 'http://smilell1.eclosionstudio.com/EmCol/ACFUN/New/' + (j+1) + '.png'; ACSmile4Title[j] = ''; } var ACSmile5 = []; var ACSmile5Title = []; for(var j = 0; j < 40; j++) { ACSmile5[j] = 'http://smilell1.eclosionstudio.com/EmCol/ACFUN/Niming/' + ((j)>=9?(j+1):('0'+(j+1))) + '.gif'; ACSmile5Title[j] = ''; } // // X(X=上面的数字+1). 小仓朝日 var AsahiURL = []; var AsahiURLTitle = []; for(var j = 0; j < 28; j++) { AsahiURL[j] = 'http://aruruu.net/ADDimages/asahi/' + (j+1) + '.png'; // 缩略图和实际图像地址用一个就行。 AsahiURLTitle[j] = ''; // 这个数组是鼠标滑过的提示数组 } function loadingHandler(loadindex, target){ switch (loadindex) { case 1: // 1:苍雪自带 userInputImg(target, KFSmileURL,KFSmileCode, KFSmileTitle, returnPlainText, 30, 30); userInputImg(target, KFSmile2, KFSmile2, KFSmile2Title, returnImg, 80, 30); userInputImg(target, KFSmile3, KFSmile3, KFSmile3Title, returnImg, 120, 20); break; case 2: // 2: 颜文字 userInputPlainText(target,emotionArray, emotionArray, returnPlainText); break; case 3: // Lovelive大法好Small userInputImg(target, LoveliveSmalltargetURL, LoveliveSmalltargetURL, LoveliveSmalltargetTitle, returnImg, 70, 70); break; case 4: // Lovelive大法好Big userInputImg(target, LoveliveSmalltargetURL, LoveliveBigtargetURL, LoveliveBigtargetTitle, returnImg, 70, 70); break; case 5: newElementEx = document.createElement('p'); newElementEx.innerHTML = "<b>快速输入出售帖, 神秘限制贴, 引用等等</b><br />"; target.appendChild(newElementEx); userInputPlainText(target, functionEmotion, functionDescription,returnPlainText); case 6: // userInputImg(target, ACSmile3, ACSmile3, ACSmile3Title, returnImg, 60, 60); userInputImg(target, ACSmile4, ACSmile4, ACSmile4Title, returnImg, 60, 60); userInputImg(target, ACSmile5, ACSmile5, ACSmile5Title, returnImg, 60, 60); break; case 7: userInputImg(target, ACSmile2, ACSmile2, ACSmile2Title, returnImg, 50, 50); userInputImg(target, ACSmile1, ACSmile1, ACSmile1Title, returnImg, 50, 50); userInputImg(target, AkariSmile1, AkariSmile1, AkariSmile1Title, returnImg, 50, 50); break; case 8: userInputImg(target, BaiduSmile1, BaiduSmile1, BaiduSmile1Title, returnImg, 30, 30); break; case 9: userInputImg(target, AsahiURL, AsahiURL, AsahiURLTitle, returnImg, 80, 80); // 这个函数直接用就好了, 第1个参数不变, 第二第三个参数是地址的数组名, 第四个是Title的数组名, 后面3个是方法, 大小 break; // case: 编号 /* case xx: 在这里添加 break; */ // default: emptyContainer.innerHTML = '<b style="color:orange">空白表情容器</b>'; return; } } /* 自定义内容到此结束 */ /*------------------------------------*/ /*------------------------------------*/ var totalNum = ItemTitleArray.length; // 功能栏数量 var textareas, textarea; var emptyContainer; var startPos, endPos; // 当前光标位置定位 textareas = document.getElementsByTagName('textarea'); if (!textareas.length) { return; } // 用户操作函数 function userInputPlainText(target, textBox,titleBox, func){ var textlength = textBox.length; for (var j=0;j<textlength; j++){ var newElementEx = document.createElement('a'); var imgaa = document.createElement('img'); imgaa.style.margin = "4px"; newElementEx.onclick = func; newElementEx._target = textarea; newElementEx.style.cursor = 'pointer'; imgaa.alt = titleBox[j]; imgaa.useMap = textBox[j]; target.appendChild(newElementEx); newElementEx.appendChild(imgaa); } target.parentNode.insertAfter(document.createElement('br')); } function userInputImg(target,thumbURL, targetURL, targetTitle, func, ImgWidth, ImgHeight){ var emotionlength = targetURL.length; for (var i = 0; i<emotionlength; i++) { target.appendChild( createButton( textarea, //对象 func, //方法 targetTitle[i], //提示文字 ImgWidth, // 缩略图宽 ImgHeight, //缩略图高 targetURL[i],thumbURL[i])); // 贴图地址和缩略图地址 } } // 返回纯文本 function insertText(selector, text) { var target = document.querySelector(selector); var startPos = target.selectionStart; //var endPos = target.selectionEnd; var value = target.value; target.value = value.slice(0, startPos) + text + value.slice(startPos); } function returnPlainText(event) { var link, textarea, s, selectedTarget; link = event.currentTarget; textarea = link._target; selectedTarget = event.target; insertText("textarea", selectedTarget.useMap); // 定位光标 // alert(startPos); // if(typeof textarea.selectionStart === 'number' && typeof textarea.selectionEnd === 'number'){ // textarea.value = textarea.value.substring(0,startPos) + selectedTarget.innerHTML + textarea.value.substring(endPos, textarea.value.length); // }else{ // textarea.value +=selectedTarget.useMap; // } event.preventDefault(); } // 返回Wincode代码 function returnImg(event) { var link, textarea, s, selectedTarget; link = event.currentTarget; textarea = link._target; selectedTarget = event.target; // textarea.value += '[img]'+selectedTarget.useMap+'[/img]'; var inserttext = '[img]'+selectedTarget.useMap+'[/img]'; insertText("textarea", inserttext); event.preventDefault(); } // ImgButton function createButton(target, func, title, width, height, src, smallsrc) { // target: 控制对象 // func: 方法 // title: 提示文字 // width,height 外观 // src: 路径 var img, button; img = document.createElement('img'); img.width = width; img.height = height; img.style.borderTop = img.style.borderLeft = "1px solid #ccc"; img.style.borderRight = img.style.borderBottom = "1px solid #888"; img.style.marginRight = "2px"; img.src = smallsrc; img.useMap = src; button = document.createElement('a'); button._target = target; button.title = title; button.href = '#'; button.onclick = func; button.style.cursor="pointer"; button.appendChild(img); button.style.borderBottom = '1px solid'; return button; } // 清空容器用函数 function closeHandler(event){ var deletTarget = document.getElementById('emotioncontainer9999'); deletTarget.parentNode.removeChild(deletTarget); emptyContainer = document.createElement('div'); emptyContainer.id = 'emotioncontainer9999'; textarea.parentNode.insertBefore(emptyContainer, textarea); } //展开动作 function extendHandler(event){ var newElement2,link,selectedTarget; /*清空当前容器*/ closeHandler(); newElement2 = document.createElement('div'); newElement2.style.border = '1px solid #9999FF'; //newElement2.innerHTML = ' '; newElement2.style.background = '#FCFCFC'; newElement2.style.paddingLeft = '4px'; newElement2.style.height = '120px'; newElement2.style.width = textarea.style.width; newElement2.style.overflow = 'auto'; emptyContainer.appendChild(newElement2); /*表情载入*/ selectedTarget = event.target; var loadIndex = selectedTarget.id - '100100'; // alert(loadIndex); loadingHandler(loadIndex,newElement2); event.preventDefault(); } //生成栏目 function createMenuItem(target,func,title, loadTitle){ var newElement; newElement = document.createElement('a'); newElement.style.height = '20px'; newElement.style.width = '100px'; newElement.innerHTML = ' [' +title+ ']'+' '; newElement.onclick = func; newElement.style.cursor = 'pointer'; newElement.id = loadTitle; target.appendChild(newElement); } // 生成项目 function createMenuElement(target, listNumber){ var newElement; newElement = document.createElement('div'); newElement.style.border = '1px solid #9999FF'; newElement.align = 'left'; newElement.style.paddingLeft = '4px'; newElement.innerHTML = ' <b style="color:orange">⑨_⑨ </b> '; newElement.style.background = '#FCFCFC'; newElement.style.height = '22px'; newElement.style.width = textarea.style.width; target.parentNode.insertBefore(newElement, target); for (var i = 0; i < listNumber; i++) { createMenuItem(newElement,extendHandler,ItemTitleArray[i],loadTitleArray[i]); } var additionalInfo = document.createElement('a'); additionalInfo.innerHTML = ' <b style="color:orange"> [隐藏表情] </b> '; additionalInfo.onclick = closeHandler; additionalInfo.style.cursor = 'pointer'; newElement.appendChild(additionalInfo); var additionalInfo2 = document.createElement('b'); additionalInfo2.innerHTML = ' <b style="color:silver"> by eddie32 </b> '; newElement.appendChild(additionalInfo2); } //主函数 for (var i = 0; i < textareas.length; i++) { textarea = textareas[i]; emptyContainer = document.createElement('div'); emptyContainer.id = 'emotioncontainer9999'; createMenuElement(textarea, totalNum); textarea.parentNode.insertBefore(emptyContainer, textarea); }