MetaFilter number all comments

On MetaFilter.com, adds a "comment 1 of 30" to each comment.

2019-08-21 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        MetaFilter number all comments
// @version     7
// @grant       none
// @match       http://*.metafilter.com/*
// @match       https://*.metafilter.com/*
// @description On MetaFilter.com, adds a "comment 1 of 30" to each comment.
// @locale      en-us
// @namespace   https://greasyfork.org/users/324881
// ==/UserScript==

function addCountToComments() {
  // first, clear all counts in case this runs more than once on a page.
  let allCommentCountSpans = Array.from(document.getElementsByClassName('tehhundUserScriptCommentCount'));
  for (let currentSpan of allCommentCountSpans) { currentSpan.remove(); }
  
  // then add counts to every comment div.
  let allCommentDivs = document.getElementsByClassName('comments');
  allCommentDivs = Array.from(allCommentDivs).filter( function(div) { return div.previousSibling.tagName == 'A'; });
  for (let [i,divToHighlight] of allCommentDivs.entries()) {
    divToHighlight.lastChild.innerHTML += '<span class=\'tehhundUserScriptCommentCount\'>Comment ' + (i+1) + ' of ' + allCommentDivs.length + '. </span>';
  }
}

// Observe the main content div for changes such as new comments and run addCountToComments() again.
const mutationObserver = new MutationObserver(addCountToComments);
mutationObserver.observe(document.getElementById('posts'), { attributes: true, childList: true, subtree: true })


// Attach event listeners

window.addEventListener('load',addCountToComments); // In case this script runs before the window load event, highlight when that event fires.
addCountToComments(); // In case this script runs after the window load event, highlight as soon as Greasemonkey runs the script.