您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
add function to fmkorea
// ==UserScript== // @name fmkoreaPlus // @name:ko 펨코 플러스 // @namespace https://www.fmkorea.com/ // @version 0.0.114 // @description add function to fmkorea // @author 초연 // @match https://www.fmkorea.com/ // @match https://www.fmkorea.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=fmkorea.com // @grant none // @license MIT // @run-at document-end // ==/UserScript== (function () { 'use strict'; var text = "아이디 들어가는 자리" console.log("펨코 플러스?") // Your code here... ////////////////////////////////////////////// setInterval(() => { // 확인된 클래스를 담을 배열 초기화 var foundClasses = []; var classNames = []; var foundfindParent = []; var foundAuthor = []; // 모든 요소 선택 var allElements = document.querySelectorAll('*'); // 각 요소의 클래스 검사 allElements.forEach(function (element) { var classNames = element.classList; // 특정 문자열을 포함하는 클래스가 있는지 확인 if (classNames && Array.from(classNames).some(className => className.includes('member'))) { // 배열에 클래스 추가 foundClasses.push(classNames); } }); allElements.forEach(function (element) { var classNames = element.classList; // 특정 문자열을 포함하는 클래스가 있는지 확인 if (classNames && Array.from(classNames).some(className => className.includes('findParent'))) { // 배열에 클래스 추가 foundfindParent.push(classNames); } }); allElements.forEach(function (element) { var classNames = element.classList; // 특정 문자열을 포함하는 클래스가 있는지 확인 if (classNames && Array.from(classNames).some(className => className.includes('author'))) { // 배열에 클래스 추가 //console.log("aaaaa" + classNames); foundAuthor.push(classNames); } }); // 확인된 클래스 배열 출력 //console.log('확인된 클래스 배열:', foundClasses[2]); for (var i = 0; i < foundClasses.length; i++) { //console.log('확인된 클래스 배열:', foundClasses[i].value); classNames.push(foundClasses[i].value); //console.log(document.getElementsByClassName(classNames[i])[0].innerText); //console.log(document.getElementsByClassName(classNames[i])[0].id); //console.log(document.getElementsByClassName(classNames[i])[0].innerHTML); //document.getElementsByClassName(classNames[i])[0].innerText = "" // 기본 감지 //document.getElementsByClassName(classNames[i])[i].innerText = "" // 기본 감지 2 } for (var i = 0; i < foundfindParent.length; i++) { //console.log('확인된 클래스 배열:', foundClasses[i].value); //console.log(foundfindParent[i]); //console.log(document.getElementsByClassName(foundfindParent[i])[0].innerText); //console.log(document.getElementsByClassName(foundfindParent[i])[0].id); //console.log(document.getElementsByClassName(foundfindParent[i])[0].innerHTML); document.getElementsByClassName(foundfindParent[i])[0].innerText = text // 대댓글 감지 // 1차 대댓글 감지 document.getElementsByClassName(foundfindParent[i])[i].innerText = text // 대댓글 감지 2 // 연속된 대댓글 감지 //document.getElementsByClassName(foundfindParent[0])[i].innerText = text // 대댓글 감지 3 } for (var i = 0; i < foundAuthor.length; i++) { //console.log('확인된 클래스 배열:', foundClasses[i].value); //console.log(foundfindParent[i]); //console.log(document.getElementsByClassName(foundAuthor[i])[i].innerText); //console.log(document.getElementsByClassName(foundfindParent[i])[0].innerHTML); //document.getElementsByClassName(foundAuthor[i])[i].innerText = text // 글 목록의 닉네임 감지 //temp } // 모든 span.author 요소 선택 var allAuthorSpans = document.querySelectorAll('span.author'); var allSpan = []; // 각 span.author 요소에 대해 검사 allAuthorSpans.forEach(function (authorSpan) { // 해당 span 요소의 하위 요소가 없는지 확인 if (authorSpan.childElementCount === 0) { console.log('클래스가 "author"이고 하위 요소가 없는 span 요소를 찾았습니다:', authorSpan); allSpan.push(authorSpan); // 원하는 동작 수행 } }); for (var i = 0; i < allSpan.length; i++) { //console.log('확인된 클래스 배열:', foundClasses[i].value); //console.log(foundfindParent[i]); //console.log(document.getElementsByClassName(foundAuthor[i])[i].innerText); //console.log(document.getElementsByClassName(foundfindParent[i])[0].innerHTML); allSpan[i].innerText = text // 글 목록의 닉네임 감지 2 //temp } var aaaa = []; // 대댓글 감지 안 되서 다시 한번 더 var allElements = document.querySelectorAll('[class^="member"]'); // comment_으로 시작하는 어떤 숫자든지 선택 var xpathExpression = '//*[starts-with(@id, "comment_")]/div[1]/a'; var xpathExpression2 = '//*[starts-with(@id, "comment_")]/div[1]/a[1]'; var matchingElements = document.evaluate(xpathExpression, document, null, XPathResult.ANY_TYPE, null); var matchingElements2 = document.evaluate(xpathExpression2, document, null, XPathResult.ANY_TYPE, null); // 결과를 배열로 변환 var elementsArray = []; var elementsArray2 = []; var element = matchingElements.iterateNext(); var element2 = matchingElements2.iterateNext(); while (element) { elementsArray.push(element); element = matchingElements.iterateNext(); } while (element2) { elementsArray2.push(element2); element2 = matchingElements2.iterateNext(); } // 이제 배열을 반복하여 각 요소에 접근 /** for (var i = 0; i < elementsArray2.length; i++) { console.log('매칭된 요소:', elementsArray2[i]); // element가 null이 아닌 경우에만 innerText를 설정 if (elementsArray2[i]) { elementsArray2[i].innerText = "★ BEST"; // 원하는 동작 수행 } } */ for (var i = 0; i < elementsArray.length; i++) { //console.log('매칭된 요소:', elementsArray[i]); // element가 null이 아닌 경우에만 innerText를 설정 if (elementsArray[i]) { if (elementsArray[i].innerText == "★ BEST") { elementsArray[i].innerText = "★ BEST"; } else { elementsArray[i].innerText = text; } // 원하는 동작 수행 } if (elementsArray2[i]) { // elementsArray2[i].innerText = "★ BEST"; // 원하는 동작 수행 } } var element = document.querySelector('.icon-hit[onclick="moveToBest(); return false;"]'); if (element) { element.innerText = "★ BEST"; } // 모든 <a> 태그 선택 var allAnchorTags = document.querySelectorAll('a'); allAnchorTags.forEach(function (anchorTag) { // onclick 속성 값이 "return false;"을 가지는지 확인 if (anchorTag.getAttribute('onclick') === 'return false;') { console.log('onclick 속성 값이 "return false;"을 가진 <a> 태그를 찾았습니다:', anchorTag); anchorTag.innerText = text // 원하는 동작 수행 } }); // 각 <a> 태그에 대해 검사 allAnchorTags.forEach(function (anchorTag) { // 클래스 이름이 "icon-hit"이면서 onclick 속성 값에 findComment과 숫자가 들어가 있는지 확인 if (anchorTag.classList.contains('icon-hit') /*&& /findComment\(\d+\)/.test(anchorTag.getAttribute('onclick'))*/) { anchorTag.innerText = "★ BEST" // 원하는 동작 수행 } }); // 글 목록에서 갤로그 바로가기 가능하게 만들기 var allElements = document.querySelectorAll('[class^="author"]'); allElements.forEach(function (span) { span.addEventListener("click", function () { window.location.href = "#popup_menu_area" }) }, 500) })(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址