您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Groups the message center by message source
- // ==UserScript==
- // @name Furaffinity nested messages
- // @description Groups the message center by message source
- // @namespace binarte.com.famessages
- // @include http*://*furaffinity.net/msg/others*
- // @version 1
- // @grant none
- // ==/UserScript==
- try {
- //console.log(journals);
- function compactItems(journals, linkidx) {
- journals = journals.getElementsByClassName('message-stream') [0];
- var newjournals = document.createElement('div');
- journals.parentNode.insertBefore(newjournals, journals);
- var journalDivs = {
- };
- var cur = journals.firstChild;
- while (cur) {
- console.log(cur);
- var next = cur.nextSibling;
- if (cur.nodeName === 'LI') {
- if (cur.className === 'section-controls') {
- cur = next;
- continue;
- }
- var user
- if (linkidx) {
- //console.log(cur.getElementsByTagName('a'));
- user = cur.getElementsByTagName('a') [linkidx].href;
- } else {
- user = cur.getElementsByTagName('a');
- user = user[0].href;
- }
- var jdiv = journalDivs[user];
- if (typeof jdiv == 'undefined') {
- jdiv = journalDivs[user] = document.createElement('ul');
- jdiv.style.overflow = 'hidden';
- jdiv.style.marginTop = '0';
- jdiv.style.marginBottom = '0';
- jdiv.className = 'message-stream';
- newjournals.appendChild(jdiv);
- } else if (!jdiv.ExpandButton) {
- var btn = document.createElement('span');
- jdiv.Counter = document.createElement('span');
- jdiv.Counter.textContent = '(2)';
- jdiv.Count = 2;
- var ref = jdiv.firstChild.getElementsByClassName('popup_date') [0];
- ref.parentNode.appendChild(jdiv.Counter);
- jdiv.ExpandButton = btn;
- btn.innerHTML = '⨁';
- btn.title = 'Expand';
- btn.style.display = 'block';
- btn.style.position = 'absolute';
- btn.style.zIndex = '10';
- btn.style.cursor = 'pointer';
- btn.style.marginLeft = '-1em';
- btn.Div = jdiv;
- btn.Collapsed = true;
- btn.CollapsedHeight = '' + cur.offsetHeight + 'px';
- btn.onclick = function () {
- if (this.Collapsed) {
- this.Div.style.maxHeight = '';
- if (this.Div.Counter) {
- this.Div.Counter.style.display = 'none';
- }
- this.Collapsed = false;
- this.innerHTML = '⨀';
- this.title = 'Collapse';
- } else {
- this.Div.style.maxHeight = this.CollapsedHeight;
- if (this.Div.Counter) {
- this.Div.Counter.style.display = '';
- }
- this.Collapsed = true;
- this.innerHTML = '⨁';
- this.title = 'Expand';
- }
- }
- var checkbox = jdiv.getElementsByTagName('input') [0];
- console.log(checkbox);
- checkbox.ExpandButton = btn;
- checkbox.Div = jdiv;
- checkbox.onchange = function () {
- if (this.ExpandButton.Collapsed) {
- var inputs = this.Div.getElementsByTagName('input');
- for (var i = 1; i < inputs.length; i++) {
- var cur = inputs[i];
- cur.checked = this.checked;
- cur = cur.nextSibling;
- }
- }
- }
- jdiv.style.maxHeight = btn.CollapsedHeight;
- jdiv.insertBefore(btn, jdiv.firstChild);
- jdiv.HR = document.createElement('HR');
- jdiv.appendChild(jdiv.HR);
- } else {
- jdiv.Counter.textContent = ' (' + (++jdiv.Count) + ')';
- }
- console.log(jdiv.HR);
- jdiv.appendChild(cur);
- if (jdiv.HR){
- jdiv.appendChild(jdiv.HR);
- }
- }
- cur = next;
- }
- newjournals.id = journals.id;
- journals.parentNode.appendChild(journals);
- }
- var journals = document.getElementById('messages-journals');
- if (journals) {
- compactItems(journals, 1);
- }
- var types = [
- 'shouts',
- 'submission_comments',
- 'user_favorites',
- 'character_comments',
- 'journal_comments'
- ];
- for (var i = 0; i < types.length; i++) {
- var type = types[i];
- var shouts = document.getElementById(type);
- if (shouts) {
- compactItems(shouts, false);
- }
- }
- } catch (ex) {
- console.log(ex);
- }