Greasy Fork

苍雪表情增强插件

DIY Emotion

目前为 2014-09-18 提交的版本。查看 最新版本

// ==UserScript==
// @name       苍雪表情增强插件
// @namespace  http://blog.eclosionstudio.com
// @version    2.0测试版
// @description  DIY Emotion
// @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 ('苍雪自带','颜文字','Lovelive小','Lovelive大','自定义');

// 链接ID, 对应, 100101开始的整数。

var loadTitleArray = Array('100101','100102','100103','100104','100105');

var totalNum = ItemTitleArray.length; // 功能栏数量

// 表情数组定义URL:
// 1:苍雪自带

// 2: 颜文字
var emotionArray = Array("(●・ 8 ・●)", "╰(๑◕ ▽ ◕๑)╯", "(﹡ˆˆ﹡)","〜♪♪",
                         "|∀゚", "(´゚Д゚`)", "(;´Д`)", "(`・ω・)", "(=゚ω゚)=", "| ω・´)", "|-` )", "|д` )", "|ー` )", "|∀` )", "(つд⊂)", "(゚Д゚≡゚Д゚)", "(^o^)ノ", "(|||゚Д゚)", "( ゚∀゚)", "( ´∀`)", "(*´∀`)", "(*゚∇゚)", "(*゚ー゚)", "( ゚ 3゚)", "( ´ー`)", "( ・_ゝ・)", "( ´_ゝ`)", "(*´д`)", "(・ー・)", "(・∀・)", "(ゝ∀・)", "(〃∀〃)", "(*゚∀゚*)", "( ゚∀。)", "( `д´)", "(`ε´ )", "(`ヮ´ )", "σ`∀´)", " ゚∀゚)σ", "゚ ∀゚)ノ", "(╬゚д゚)", "(|||゚д゚)", "( ゚д゚)", "Σ( ゚д゚)", "( ;゚д゚)", "( ;´д`)", "( д ) ゚ ゚", "( ☉д⊙)", "((( ゚д゚)))", "( ` ・´)", "( ´д`)", "( -д-)", "(>д<)", "・゚( ノд`゚)", "( TдT)", "( ̄∇ ̄)", "( ̄3 ̄)", "( ̄ー ̄)", "( ̄ .  ̄)", "( ̄皿 ̄)", "( ̄艸 ̄)", "( ̄︿ ̄)", "( ̄︶ ̄)", "ヾ(´ω゚`)", "(*´ω`*)", "(・ω・)", "( ´・ω)", "(`・ω)", "(´・ω・`)", "(`・ω・´)", "( `_っ´)", "( `ー´)", "( ´_っ`)", "( ´ρ`)", "( ゚ω゚)", "(o゚ω゚o)", "( ^ω^)", "(。◕∀◕。)", "/( ◕‿‿◕ )\\", "ヾ(´ε`ヾ)", "(ノ゚∀゚)ノ", "(σ゚д゚)σ", "(σ゚∀゚)σ", "|д゚ )", "┃電柱┃", "゚(つд`゚)", "゚Å゚ ) ", "⊂彡☆))д`)", "⊂彡☆))д´)", "⊂彡☆))∀`)", "(´∀((☆ミつ",
                         "( ◜◒◝ )","(●´3`)~♪");
// 3. lovelive专用小
var LoveliveSmalltargetURL = [];

for(var j = 0; j < 40; j++) {
    LoveliveSmalltargetURL[j] = 'http://smilell2.eclosionstudio.com/Small/Lovelive2nd' +
        (j+1) + '.png';
}

for(var j = 0; j < 40; j++) {
    LoveliveSmalltargetURL[j+40] = 'http://smilell1.eclosionstudio.com/Small/Lovelive' +
        (j+1) + '.png';
}

// 4. lovelive专用大
var LoveliveBigtargetURL = [];

for(var j = 0; j < 40; j++) {
    LoveliveBigtargetURL[j] = 'http://smilell2.eclosionstudio.com/Big/Lovelive2nd' +
        (j+1) + '.png';
}

for(var j = 0; j < 40; j++) {
    LoveliveBigtargetURL[j+40] = 'http://smilell1.eclosionstudio.com/Big/Lovelive' +
        (j+1) + '.png';
}
// 返回函数修改: 

function loadingHandler(loadindex, target){
    
    switch (loadindex) {
            // 1:苍雪自带
        case 1:
            newElementEx = document.createElement('p');
            newElementEx.innerHTML = "<b>测试版未完成...</b><br />"
            target.appendChild(newElementEx);
            break;
            // 2: 颜文字
        case 2:
            for (var j=0;j<emotionArray.length; j++){
                var emotiontext = emotionArray[j];
                newElementEx = document.createElement('a'); 
                newElementEx.onclick = returnEmotionHandler;
                newElementEx._target = textarea;
                newElementEx.style.cursor = 'pointer';
                newElementEx.title = emotiontext;  
                newElementEx.innerHTML =    '<b>'+newElementEx.title+' </b>';
                target.appendChild(newElementEx);
            }
            target.parentNode.insertAfter(
                document.createElement('br'));
            break;
        case 3: // Lovelive大法好Small
            for(var j = 0; j < 80; j++) {
                // 引用目标URL
                var targetURL = LoveliveSmalltargetURL[j];
                // 创建预览图像
                target.appendChild(
                    createButton(
                        textarea,     //对象
                        returnImg,   //方法
                        'LL2nd'+j,   //提示文字
                        40,
                        40,
                        targetURL) );
            }
            break;
        case 4: // Lovelive大法好Big
            for(var j = 0; j < 80; j++) {
                // 引用目标URL
                var targetURL = LoveliveBigtargetURL[j];
                // 创建预览图像
                target.appendChild(
                    createButton(
                        textarea,     //对象
                        returnImg,   //方法
                        'LL2nd'+j,   //提示文字
                        40,
                        40,
                        targetURL) );
            }
            break;
        default:
            newElementEx = document.createElement('p');
            newElementEx.innerHTML = "<b>自定义...</b><br />"
            target.appendChild(newElementEx);
            return;
    }
    
}
/* 自定义内容到此结束 */
/*------------------------------------*/

var textareas, textarea;

var emptyContainer;

textareas = document.getElementsByTagName('textarea');
if (!textareas.length) { return; }



// 返回颜文字
function returnEmotionHandler(event) {
    var link, textarea, s, selectedTarget;
    link = event.currentTarget;
    textarea = link._target;
    selectedTarget = event.target;
    //    alert(selectedTarget.innerHTML);
    textarea.value +=  selectedTarget.innerHTML;
    event.preventDefault();
}

// 返回Wincode代码
function returnImg(event) {
    var link, textarea, s, selectedTarget;
    link = event.currentTarget;
    textarea = link._target;
    selectedTarget = event.target;
    //    alert(selectedTarget.src);
    textarea.value += '[img]'+selectedTarget.src+'[/img]';
    event.preventDefault();
}

// ImgButton
function createButton(target, func, title, width, height, src,altmessage) {
    // 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 = src;
    button = document.createElement('a');
    button._target = target;
    button.title = title;
    button.href = '#';
    button.onclick = func;
    button.style.cursor="pointer";
    var replaceflag = 0;
    img.src.replace(/Big/,"Small");
    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';
    //    emptyContainer.innerHTML = '<b style="color:orange">空白表情容器</b>';
    textarea.parentNode.insertBefore(emptyContainer, textarea);
}

//展开动作
function extendHandler(event){
    var newElement2,link,selectedTarget;
    
    /*清空当前容器*/
    closeHandler();
    
    newElement2 = document.createElement('div');
    newElement2.style.border = '3px solid red';
    newElement2.innerHTML = '&nbsp;&nbsp;';
    newElement2.style.background = 'white';
    newElement2.style.height = '80px';
    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+ ']'+'&nbsp;&nbsp;';
    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 red';
    newElement.align = 'left';
    newElement.style.paddingLeft = '10px';
    newElement.innerHTML = ' <b style="color:orange">⑨_⑨ </b> ';
    newElement.style.background = '#FFD0FF';
    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('b');
    additionalInfo.innerHTML = ' <b style="color:silver"> 2014 by eddie32 </b> ';
    newElement.appendChild(additionalInfo)
   
}



//主函数
for (var i = 0; i < textareas.length; i++) {
    textarea = textareas[i];
    emptyContainer = document.createElement('div');
    emptyContainer.id = 'emotioncontainer9999';
    //    emptyContainer.innerHTML = '<b style="color:orange">空白表情容器</b>';
    createMenuElement(textarea, totalNum);
    textarea.parentNode.insertBefore(emptyContainer, textarea);
    
}