Skip to content

rhwp-safari: showBadges=false면 클릭 인터셉트/호버가 비활성화되는 init 조건 버그 #222

@postmelee

Description

@postmelee

현상

Safari 확장(rhwp-safari)에서 옵션을 아래처럼 설정하면 HWP 링크 인터셉트가 동작하지 않는 것처럼 보입니다.

  • showBadges = false
  • hoverPreview = true (또는 autoOpen = true)

재현 시 증상:

  • 링크 hover 시 썸네일/호버 카드가 뜨지 않음
  • 링크 click 시 뷰어 오픈 인터셉트가 붙지 않음
2026-04-20.19.41.42.mov

원인

rhwp-safari/src/content-script.jsinit()settings.showBadges가 true일 때만 processLinks()/observeDynamicContent()를 실행합니다.

processLinks()는 배지 렌더링만 담당하는 함수가 아니라, 아래 핵심 바인딩을 같이 수행합니다.

  • interceptHwpClick(anchor)
  • attachHoverEvents(anchor)

결과적으로 showBadges=false이면 배지뿐 아니라 인터셉트/호버 바인딩 전체가 스킵됩니다.

배경

  • 옵션 UI(rhwp-safari/src/options.html, rhwp-safari/src/options.js)는 showBadgeshoverPreview를 독립 토글로 노출합니다.
  • 하지만 현재 구현은 showBadges를 사실상 마스터 게이트로 사용하고 있어 옵션 의미가 충돌합니다.
  • 사용자 입장에서는 "배지만 끈 상태"를 의도했는데 "인터셉트 자체 비활성"처럼 동작해 테스트/사용이 어려워집니다.

수정 방안

init()의 초기 스캔/관찰 실행 조건을 기능별로 분리합니다.

  • 링크 스캔/동적 관찰 실행 조건: showBadges || hoverPreview || autoOpen
  • 배지 DOM 삽입 조건: 기존처럼 showBadges 분기에서만 수행

즉, showBadges는 "배지 렌더링"에만 영향을 주고, 인터셉트/호버 바인딩은 hoverPreview/autoOpen 설정과 독립적으로 동작하게 정리합니다.

테스트

  • showBadges=false, hoverPreview=true, autoOpen=true에서 hover 카드 정상 표시
  • 동일 조건에서 click 인터셉트(뷰어 오픈) 정상 동작
  • showBadges=false, hoverPreview=false, autoOpen=false에서 배지/호버/인터셉트 모두 비활성 유지
  • 동적 삽입 링크(무한 스크롤/SPA)에서도 위 조건이 동일하게 유지

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions