kone
소미소프트

소미소프트

미리보기 관련 유저스크립트

07/28/2025, 04:59:26
유틸
2498 views · 3 likes

미리보기 사진 위치나 크기 조정이 필요하다 생각해서 만듬 필요한 사람 쓰셈

+25/07/28 19:53분 수정 게시글 클릭시 미리보기 이미지 남아있는 문제 해결

// ==UserScript==
// @name         코네 미리보기 조정
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  kone.gg 미리보기 복제 방식으로 위치와 크기 자유 조정 + 게시글 밖 잘림 방지 + 원본 숨김 처리 포함 + SPA 대응
// @author       cloud67p
// @match        https://kone.gg/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
  'use strict';
  
  let activePreview = null;
  let hiddenOriginal = null;
  let currentUrl = window.location.href;

  // 미리보기 정리 함수
  function cleanupPreview() {
    if (activePreview) {
      activePreview.remove();
      activePreview = null;
    }
    if (hiddenOriginal) {
      hiddenOriginal.style.display = '';
      hiddenOriginal = null;
    }
  }

  // URL 변경 감지 (SPA 대응)
  function detectUrlChange() {
    const newUrl = window.location.href;
    if (newUrl !== currentUrl) {
      currentUrl = newUrl;
      cleanupPreview();
    }
  }

  // URL 변경 감지를 위한 이벤트 리스너들
  window.addEventListener('popstate', cleanupPreview);
  
  // pushState, replaceState 감지 (SPA 라우팅)
  const originalPushState = history.pushState;
  const originalReplaceState = history.replaceState;
  
  history.pushState = function() {
    originalPushState.apply(history, arguments);
    cleanupPreview();
  };
  
  history.replaceState = function() {
    originalReplaceState.apply(history, arguments);
    cleanupPreview();
  };

  // 주기적으로 URL 변경 체크 (추가 안전장치)
  setInterval(detectUrlChange, 100);

  // 클릭 이벤트 감지 (게시글 링크 클릭 등)
  document.addEventListener('click', (e) => {
    // 링크나 버튼 클릭 시 미리보기 정리
    if (e.target.closest('a') || e.target.closest('button') || e.target.closest('[role="button"]')) {
      cleanupPreview();
    }
  }, true);

  // 키보드 이벤트 감지 (ESC 키 등)
  document.addEventListener('keydown', (e) => {
    if (e.key === 'Escape') {
      cleanupPreview();
    }
  });

  // 기존 마우스오버 이벤트
  document.addEventListener('mouseover', (e) => {
    const postWrapper = e.target.closest('.group\\/post-wrapper');
    if (!postWrapper) return;
    
    const preview = postWrapper.querySelector('.group-hover\\/post-wrapper\\:block');
    if (!preview) return;
    
    // 기존 미리보기 정리
    cleanupPreview();
    
    // 원본 숨김
    preview.style.display = 'none';
    hiddenOriginal = preview;
    
    // 복제본 생성
    const clone = preview.cloneNode(true);
    const rect = postWrapper.getBoundingClientRect();
    
    clone.style.position = 'fixed';
    clone.style.left = '40rem';
    clone.style.top = `${rect.top - 200}px`;
    clone.style.zIndex = '9999';
    clone.style.pointerEvents = 'none';
    clone.style.display = 'block';
    
    const img = clone.querySelector('img');
    if (img) {
      img.className = '';
      img.style.width = 'auto';
      img.style.height = 'auto';
      img.style.maxWidth = '720px';
      img.style.maxHeight = '720px';
      img.style.objectFit = 'contain';
      img.style.display = 'block';
    }
    
    document.body.appendChild(clone);
    activePreview = clone;
  });

  // 기존 마우스아웃 이벤트
  document.addEventListener('mouseout', (e) => {
    const postWrapper = e.target.closest('.group\\/post-wrapper');
    const related = e.relatedTarget?.closest?.('.group\\/post-wrapper');
    
    if (postWrapper && related !== postWrapper) {
      cleanupPreview();
    }
  });

  // 페이지 언로드 시 정리
  window.addEventListener('beforeunload', cleanupPreview);
  
  // 페이지 숨김 시 정리 (탭 전환 등)
  document.addEventListener('visibilitychange', () => {
    if (document.hidden) {
      cleanupPreview();
    }
  });

})();
3
1 comment
07/28/25 Edited 07/28/25
1. 미리보기가 게시글 제목을 가림 -> 위치를 더 오른쪽으로 보냄 2. 미리보기 더 크게 보고싶은데 단순히 크기 조정시 -> 게시글 박스를 넘어가면 짤림 -> 새로 복제함 3. 크기 더 크게 만드니 맨 아래 게시글의 미리보기는 하단부가 짤림 -> 미리보기들을 전부 위로 좀 더 올림 4.(수정추가) 미리보기 이미지 게시글 이동시에도 남아있는 오류 수정
Joiplay 1.20.611
유틸
o_o
08/30/25 6874 7
검은정복왕 공략
유틸
pqland5051
08/30/25 14605 8
제복 그녀 2.5
유틸
미스터장
08/27/25 6363 25
감옥용사 조이플 구동 패치
유틸
DASL
08/26/25 2271 7
시니시스타2 아헤모드 v3
유틸
cordial
08/24/25 25737 32
쯔꾸르 MV,MZ AI 번역 툴과 그 외 번역에 유용한 툴들 공유 및 사용법 대충 정리
유틸
미스터장
08/22/25 41059 128
시니시스타2 1.1 아헤모드 v2
유틸
cordial
08/18/25 12375 24
유저 차단 스크립트 업데이트 알림
유틸
글쓴이
08/17/25 5379 6
[스팀노모이미지만] BLACK SOULS ~검은 동화와 오마 공주~
유틸
미스터장
08/16/25 5139 17
동인메뉴판 - 동인지 관리 유틸 만들어옴
유틸
qqoro
08/15/25 24414 95
음문이 새겨진 마더 알리시아 ver.1.483 신음 소리 증폭
유틸
shdcd
08/15/25 3504 3
Auto Somi 업데이트
유틸
김머시기
08/11/25 9316 38
유니티 게임 XUnity.AutoTranslator용 폰트모음
유틸
미스터장
08/11/25 8069 12
시니시스타2 1.1 아헤모드
유틸
cordial
08/11/25 13534 30
던전앤브라이드 후기와 상세정보
유틸
positron
08/09/25 11962 13
히토미 다운로더용 케모노 다운로드 스크립트
유틸
글쓴이
08/08/25 19570 20
유니티 자동번역기 유니티6000 tmp 폰트 에셋 번들
유틸
1bvk3b6ka8
08/07/25 4888 11
DLsite 썸네일 원클릭! 다운로더 v0.2.1 (20250806) 스크립트
유틸
Legnax
08/05/25 4115 10
공식AI번역에서 추출한 마인드 류다 이미지번역파일만
유틸
미스터장
08/05/25 4801 19
시니시스타 2 모드 모음(1.10)
유틸
sims9876
08/05/25 9714 15
Joiplay 1.20.600
유틸
o_o
08/05/25 5242 7
DLsite 썸네일 원클릭! 다운로더 v0.1.1 (20250805) 스크립트
유틸
Legnax
08/05/25 3185 6
[버려짐] 던전 앤 브라이드 치트모드 1.44 업데이트 + 번역 모드 대응 버전 출시 *10/15 18:33 수정
유틸
rengester
08/05/25 30092 64
울프툴 3.625 한글화
유틸
brothers
08/03/25 3898 16
사파리 base64 디코딩 단축어
유틸
wjsrlzhs
08/03/25 1998 1
[게임 미포함] 배덕의 충동 v1.2 아랫털 추가 패치
유틸
털털털털털털털털
08/03/25 5625 14
Winlator (엑시노스 구동 가능)
유틸
o_o
08/02/25 14845 16
[버려짐] 내가 직접 만든 던전 앤 브라이드 모드 공유 *치트 기능 추가 08/04 10:03 수정
유틸
rengester
08/02/25 13482 24
update0731 DL + STEAM 미리보기 크롬 확장.
유틸
ddegul
07/30/25 3502 11
거01212155 특전 비밀번호와 수정파일
유틸
커댕이
07/30/25 3360 4