kone
소미소프트

소미소프트

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

07/28/2025, 04:59:26
유틸
2663 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.(수정추가) 미리보기 이미지 게시글 이동시에도 남아있는 오류 수정
daily lives of my country side 질문
일반
유미
05/20 3339 -1
[요청복구] 【한국어 자막판】연하 여자친구의 사정 전에 쥐어짜는 속박 루인드 오르가즘 손딸
소리
CONEGPT
05/20 7088 47
청아)이런게 은근 꼴리네
야짤
gpsel157
05/20 13037 29
음주의 미궁 플레이 중에 궁금한게 생겨서 올려봅니다!
질문
yammisho
05/20 2388 0
[복구요청]( RJ431889) NTRRPG~타락의 탑과 이종들의 광연~,(RJ01220958) NTRRPG2 ~이질적인 마을과 침식된 마음~
요청
sample098
05/20 4165 2
[복구 요청] RJ297476 LeGendery Strangers ~男女主人公つがいじめRPG~ 1.04
요청
Kirby
05/20 2916 4
[번역]성노예령이 붙은 사고물건 ~퇴마 실패한 영능력 소녀 절정 지옥에 갇히다!?~
동인
마법우엉
05/20 26270 157
비월선행록 사운드
질문
skdjfnal
05/20 2094 0
시퀄 블라이트 장신구는 뭐하는 용도임?
질문
arknight
05/20 3131 1
24시간 무지소녀 서클 이번에는 확실하게 실전 있네
정보
minki
05/20 3790 8
스포) 의술사 보스전 질문
질문
미미쨩
05/20 2718 1
아득한 세레스피아 세이브 위치
질문
dsfdsf
05/20 3457 0
비월선행록 질문!
질문
msj90
05/20 1954 0
응석받이 겨울편 하렘엔딩 어캐달성하나요 ??
질문
bigshot8
05/20 3208 0
이제까지 했던 네토물중 베스트 하나씩만 적어줘요
질문
깡계
05/20 3216 0
직번)[bosshi]낙원의 나쁜 아이들
동인
woo15
05/20 16379 39
ai 붕스)카스토리스 ntr 2
야짤
ezmood
05/20 8692 42
[복구요청] 라미 컬렉션 6개
요청
sspnyang
05/20 2995 1
ai 붕스)카스토리스 ntr
야짤
ezmood
05/20 8977 52
야겜 컨설팅 좀 해주실 고수 분있나요
질문
너울
05/20 3090 1
RJ01041019 게헨나 (ゲヘナ) 1.09 복구 요청 드립니다.
요청
mu52w
05/20 3294 0
BSS와 NTR의 구분
일반
익명
05/20 3620 1
[구매보급][번역요청]보추있음)RJ01500241 H 아내 만들기2
미번
skeh1023
05/20 12845 26
88. AI, 블아) 히비키의 응원
야짤
miso5
05/20 8445 63
[번역 요청] 님포마니아 프리스트 최신작
미번
handk-02
05/20 8286 25
[구매보급] [버전업] [자체한글] RJ01169914 시니시스터2 SiNiSistar2 1.31? 26.05.20
번역
gkqisq
05/20 34519 205
비월선행록 질문
질문
rkfnek
05/20 4816 0
[복구요청] RJ424103 アゾット 아조트
요청
명붕이
05/20 5265 0
누코마진 망령이다. 존나 행복하다
일반
karoru
05/20 2355 5
동인지 하나 찾아주실수있나요
질문
kswo202
05/20 3018 0