kone
소미소프트

소미소프트

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

07/28/2025, 04:59:26
유틸
2642 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.(수정추가) 미리보기 이미지 게시글 이동시에도 남아있는 오류 수정
[진짜 간절히 번역 요청] 口リクエ2~純白~ 로리퀘2 순백
미번
bansbes
05/24 7525 13
FORTUNE BRIDE 이거 진엔딩 없네
일반
2h4sd5
05/24 2274 0
19금 ai는 어디서 만드는거임?
질문
dzqzvsz
05/24 1973 0
오나사포 처음해보고 느낀거
일반
fkfnebwk
05/24 1798 0
ai) ----청아 최면앱----YBYB 자작 캐릭
야짤
Ghost
05/24 7994 34
[요청복구][버전업] (1.4v)(RJ185696) 빨간 두건의 숲
복구
vhskorea
05/24 11426 30
(미번 노모) [Usagi Nagomu] 황혼의 창엘프 9 : 타락 5
동인
macross7
05/24 15595 35
욕망의 여신 이리나 저장 어떻게 해?
질문
49i1jb
05/24 1776 0
카네다는 나쁘지 않아1편 AI로 리마스터링 중
작업현황
powr963
05/24 2759 9
(미번 노모) [Karube Guri] 이 섹스는 연기입니다 2
동인
macross7
05/24 10943 23
요청쪽 탭 관련해서 질문좀 드려요.
질문
mz666
05/24 2080 1
[복구요청] Jam packed line tale
요청
nnnnnnnnnn0
05/24 2757 -1
[방주 알림] 멸망 방주 글 삭제 사유
야짤
ㅇㅇ
05/24 10511 62
[공식번역][스팀][노모] 카린의 형무소 Karryn's Prison ver1.3.1.69 all DLC
번역
문명
05/24 31140 249
야애니 제목 궁금쓰...
질문
sakura-ne
05/24 3548 -1
[시모바시라 공방] 「마장영희 셀레녹시아」 제작 보고 71 - 차이점 제작!
정보
날개 로봇
05/24 8327 48
[청아](번역+이미지번역) RJ141187 상복 로리타 구속 기담 미소녀 노예 조교 완전 한글판
번역
ilillilllilil
05/24 39212 220
레이나와 그녀의 이상적인 동거 클리어 후기
후기 및 공략
np418
05/24 4975 5
[복구요청]RJ342781 수관의 사냥꾼
요청
slla4123
05/24 2852 0
혹시 동인지 좀 찾아주실 분
질문
kkkkl
05/24 992 0
야겜 찾기 참 어렵다...
일반
stealthmania
05/24 1704 0
B-PRISON UNCHAIN 1.07 요청드립니다
요청
erueur
05/24 2083 0
히토미내용 찾아주세요3달동안찾음
일반
hiking
05/24 1488 0
5월 하순에 온다는놈들
일반
ㅇㅇ
05/24 2430 -1
비타퀘2 오류로 3시간 날렸네
일반
이카루스 테크놀로지스
05/24 1901 0
[복구요청] 무인도 사원 여행기 요청드립니다!
요청
혼자서도촬해요
05/24 2049 2
RJ번호 써져있는거에 마우스올리면
질문
ㅇㅇ
05/24 1670 3
소미소프트는 금지해야함
일반
아이기스맘
05/24 3221 -21
여성향 야겜 괜찮은거 알려주실 수 있나여...
질문
ㅇㄴㅁㄻㅎ
05/24 2487 -2
떡인지 질문좀
질문
츄르도둑
05/24 2089 0