kone
소미소프트

소미소프트

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

07/28/2025, 04:59:26
유틸
2512 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.(수정추가) 미리보기 이미지 게시글 이동시에도 남아있는 오류 수정
(보테배) riboshika 신작 1만 다운로드 감사짤
야짤
츠바키미유
05/17 8256 22
스토리나 게임성 야무진겜 추천 가능?
질문
votmvkdlsej
05/17 4470 0
[복구요청] RJ424103 アゾット 아조트
요청
명붕이
05/17 2997 0
[미번/구매보급/번역요청] 라파푸루 합본팩 (게임이름 및 번호들은 본문기재)
미번
silver
05/17 13132 27
이 게임 기억나시는 분ㅠㅠ
질문
korer
05/17 3435 0
Scarlet escape 실행오류
질문
yuhwayuhwa
05/17 3465 -1
의술사 나이프 어디서 얻음?
질문
hyun0607
05/17 3416 0
여주물에 개걸창인 겜 추천 좀 부탁드립니다
질문
zenche
05/17 5119 0
Ai소녀 쉐이더 적용하는법 아시는 분
질문
goat-joat
05/17 2162 0
좀 색다른 게임없나
질문
mkasdo
05/17 5264 1
[복구요청] (RJ01445683) 오네쇼타 RPG 유혹의 싱귤래리티 ~음란과 타락의 여신에게 노려진 소년이, 성벽이 산산조각 나면서도 끝내 유혹에 맞서는 이야기~ ver.1.11
요청
godfem
05/17 9674 2
음해의 트랜스크랩 번역 현황
작업현황
날개 로봇
05/17 9596 41
게임 이름 아시는 분?
질문
nameko1237
05/17 2836 0
3d 포르노 만들어보고 싶은데
일반
qar0010
05/17 9321 -3
...? 이거 미친놈아님?
일반
아로나
05/17 3581 5
체험판을 하면 기다리는게 더 괴로울거같은데
일반
memphis
05/17 3929 4
[복구요청] RJ01585232 여름방학, 나는 친구의 여자친구를 NTR했다 ver.26.03.14
요청
makauboy1004
05/17 4979 1
비월선행록질문있습니다.
질문
skaiqk
05/17 1684 1
개막장테크 재밌네 ㅋㅋㅋ
일반
nagisa8262
05/17 3315 2
[Homunculus/노모] 봄을 쫒다
동인
ㅇㅇ
05/17 18745 104
던전 앤 브라이드(RJ01431277) 순정버전 1회차 클리어 세이브 파일 복구
세이브
lethita
05/17 9455 7
livemaker 번역 작업 3일차
일반
아로나
05/17 2077 3
던브 이거 노움한테 청혼 어케해야됨?
질문
nagisa8262
05/17 3318 0
패전례희 아르네아 짧은 후기
후기 및 공략
qudo
05/17 9300 4
[복구요청] 米悠ch (JP) KKD 작가 영상 복구요청
요청
bane7330
05/17 10047 0
리오를 따먹었던 3년전 그날..
야짤
EPanDS
05/17 7647 12
[약스포] 타락신관 순애루트 클리어 후기
후기 및 공략
tovozsrfh
05/17 12660 4
[요청복구] 요청복구 3개
복구
illusia
05/17 25219 62
AI, 마비노기) 목욕중인 나오 소환하기
야짤
miso5
05/17 9701 58
[복구요청] RJ01378937 거유 자매( 巨乳姉妹)
요청
maronmaron
05/17 4471 0