MediaWiki:Gadget-Emotion.js

H萌娘,万物皆可H的百科全书!
imported>=海豚=2020年9月30日 (三) 12:55的版本
跳到导航 跳到搜索

注意:这类代码页面在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

(function () {
    if (mw.config.get('wgAction') == 'view' && mw.config.get('wgPageName') != '首页') {
        var emojis = '<div class="emo" style="display:none"><div class="emolist"><div>';
        for (i = 1; i < 40; ++i) {
            if (i == 40||i == 50) {
                emojis += "</div><div>";
            }
            emojis += '<button class="flowthread-btn plus" data-id=' + i + '><div class="emos emoji' + i + '" ></div></button>';
        }
        emojis += "</div>";
        var btns = "";
        for (var i = 0; i < 3; i++) {
            btns += '<button class="flowthread-btn emo-tab-' + i + '"></button>'
        }
        emojis = '<button class="flowthread-btn flowthread-btn-emoticon emoji" title="表情"><i class="far fa-laugh-wink" style="color:#555;"></i></button>' + emojis + '</div><div class="emo-tabs">' + btns + '</div></div>'
        var i = setInterval(function () {
            if ($(".comment-toolbar").length != 0) {
                clearInterval(i);
                $(".comment-toolbar").append(emojis);
                $('.emolist>div>button').on('click', function () {
                    var textarea = $(this).parent().parent().parent().parent().prev().prev();
                    var text = textarea.val();
                    text += '<div class="emos emoji' + this.dataset.id + '"></div>';
                    textarea.val(text);
                });
                $(".flowthread-btn-emoticon").on('click', function () {
                    var btn = $(this);
                    if (btn.hasClass("on")) {
                        btn.next().hide(300);
                        btn.removeClass('on');
                    } else {
                        btn.next().show(300);
                        btn.addClass('on');
                    }
                    btn.prev().prev().prev().addClass("on");
                });
                $(".emo-tabs").on('click', 'button', function () {
                    var btn = $(this);
                    if (!btn.hasClass('on')) {
                        btn.parent().children().removeClass('on');
                        btn.addClass('on');
                        var n = parseInt(Array.from(this.classList).find(function (x) { return x.indexOf("emo-tab") != -1 }).replace('emo-tab-', ''));
                        var c = btn.parent().prev().children();
                        c.css('display','none');
                        $(c[n]).css('display','block');
                    }
                });
                $(".comment-container").on('click', '.comment-reply', function () {
                    var j = setInterval(function () {
                        var toolbar = $('.comment-container .comment-toolbar')
                        if (toolbar.length !== 0) {
                            clearInterval(j);
                            toolbar.append(emojis);
                        }
                    })
                }).on('click', '.emolist>div>button', function () {
                    var textarea = $(this).parent().parent().parent().parent().prev().prev();
                    var text = textarea.val();
                    text += '<div class="emos emoji' + this.dataset.id + '"></div>';
                    textarea.val(text);
                }).on('click', '.flowthread-btn-emoticon', function () {
                    var btn = $(this);
                    if (btn.hasClass("on")) {
                        btn.next().hide(300);
                        btn.removeClass('on');
                    } else {
                        btn.next().show(300);
                        btn.addClass('on');
                    }
                    btn.prev().prev().prev().addClass("on");
                }).on('click','.emo-tabs>button',function(){
                    var btn = $(this);
                    if (!btn.hasClass('on')) {
                        btn.parent().children().removeClass('on');
                        btn.addClass('on');
                        var n = parseInt(Array.from(this.classList).find(function (x) { return x.indexOf("emo-tab") != -1 }).replace('emo-tab-', ''));
                        var c = btn.parent().prev().children();
                        c.css('display', 'none');
                        $(c[n]).css('display', 'block');
                    }
                })
            }
        }, 1);
    }
})();