kone
소미소프트

소미소프트

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

07/28/2025, 04:59:26
유틸
2559 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.(수정추가) 미리보기 이미지 게시글 이동시에도 남아있는 오류 수정
자체번역) Sister's of Sin
번역
썩은동태눈깔맨
04/24 27709 116
3Mura 0424
영상
참새
04/24 24287 112
[1+2편][구매보급]음란한 폭유 시스터가 ○밥투성이 자○에 매달려 봉사해 주는 이야기♪
소리
이름뭐하지
04/24 13026 66
코렐라인
야짤
Ghost
04/24 15062 97
[미번/번역요청]쌍둥이 월정액 서비스 숙박 플랜
동인
아돌
04/24 21276 35
개인적으로 일러가 정말 좋았던 게임 "미아짱은 엣치한 무녀님"
후기 및 공략
zxc313
04/24 22205 15
[번역] 에로 트랩 해체팀 갑니다!!
동인
마법우엉
04/24 59326 348
[구매보급/번역요청] RJ01211175 나의 그녀는 정의의 히로인 ~그런 그녀는 오늘도 패할 수 있다~
미번
cain1334
04/24 17519 44
Daily Lives My Countryside 퀘스트 저널 손번역 1차 완료본
번역
감자떡사요
04/24 42547 271
직번]haruhisky)출렁이야 하루히의 당혹
동인
woo15
04/24 22434 73
[Uno Ryoku] TS고양이 서큐버스 씨는 착정따위 하고 싶지 않아! 3
동인
ashgray
04/24 22980 79
bmFqYXI 음성추가본
영상
qwesadwe
04/24 29382 101
직번) [Agata] 알몸생활 17화
동인
qlalfsla
04/24 26929 71
미번,구매보급)대마관 아폴로의 쾌감조교
미번
물개
04/24 11392 25
여우신 어떠신가요?
동인
ol-lo
04/24 40999 127
[구매보급][번역요청] RJ01453849 触手ポーカー~ならべてイグイグ~ Ver1.0.1
미번
rkrkrkrk777777
04/24 14835 32
AI) 에니시아와 계약문, 참회실의 비밀
야짤
miso5
04/24 13975 89
달콤한 복수 (nude / stocking + bgm / SFX 버전)
영상
브레머튼
04/24 22806 79
5/1 밀크팩토리 신작 정보 공개예정
정보
bluenote298
04/24 7340 21
[미번, 번역요청][Zeroyama] 마조 갸루 ~ 이런 오타쿠한테 빠져버렸다니... ~
동인
mumei1234
04/24 29835 50
마비카 [원신] (기본 + 임신 버전)
영상
브레머튼
04/24 24691 84
움짤 다량, 엔딩 스포 포함) Ikisaw ~デカ乳ツインテとイキ我慢の部屋~ 엔딩 후기
후기 및 공략
Nate Higgerson
04/24 14017 18
[AI번역/NTR주의] 네노토리 v2.0
번역
weller703
04/24 62777 151
[QHD 96f]아카네는 홀려 물들여진다 1, 2편
영상
Shinjiro
04/23 29826 138
[AI번역] 루나와 음욕의 트랩 던전
번역
meari4686
04/23 47021 178
[AI번역] 왕궁 기사의 디터미네이션
번역
미식이네
04/23 53799 172
'코스 플레이어 우타네 토레' 내일 발매
정보
라임무르
04/23 18641 29
이 씹 개천박한 빵댕이는 뭐냐!
야짤
Ghost
04/23 20087 42
전 개방, 풀 감도 세이브) 변태여친 ~나와 그녀의 두근두근♡ 생방송~ v1.13(26.04.22)
세이브
hwiv403
04/23 28493 21
[구매보급] [청?아, 미번] RJ01582528 押しに弱い女の子が流されエッチで一晩中イキまくる動画
영상
염지
04/23 47000 258