Revert "feat(viewer): md 본문 외부 링크 새 탭 + rel 보안"
This reverts commit 60f3b25.
병렬 세션이 동일 P0(외부 링크 새 탭+rel)를 feat/memo-to-document 브랜치에
docMarkdown.ts link 렌더러 + ADD_ATTR 방식으로 이미 구현(SSR 적용·memos 번들).
중복 회피 위해 본 $effect 구현(redundant)을 canonical 에서 되돌리고 그쪽에 양보.
분석 산출물/측정 결과는 PKM learning 문서로 기록 보존.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -160,24 +160,6 @@
|
||||
ph.dataset.mdImageSwapped = '1';
|
||||
}
|
||||
});
|
||||
|
||||
// 외부 http(s) 링크 → 새 탭(target=_blank) + 보안 rel(noopener noreferrer).
|
||||
// marked 렌더러/DOMPurify 를 건드리지 않고 sanitize 후 라이브 DOM 에 속성을 부여한다 —
|
||||
// heading anchor 와 동일한 DOM 후처리 패턴(전역 DOMPurify hook 오염·렌더러 API 의존 없이 안전).
|
||||
// 앵커(#)·상대경로·mailto 등 비-http(s) 링크는 손대지 않는다(SPA 내부 항법 보존).
|
||||
$effect(() => {
|
||||
void renderedHtml;
|
||||
if (!containerRef) return;
|
||||
const links = containerRef.querySelectorAll<HTMLAnchorElement>('a[href]');
|
||||
for (const a of links) {
|
||||
if (a.dataset.extlinkProcessed === '1') continue;
|
||||
const href = a.getAttribute('href') ?? '';
|
||||
if (!/^https?:\/\//i.test(href)) continue; // 외부 http(s) 만
|
||||
a.setAttribute('target', '_blank');
|
||||
a.setAttribute('rel', 'noopener noreferrer');
|
||||
a.dataset.extlinkProcessed = '1';
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="mb-2">
|
||||
|
||||
Reference in New Issue
Block a user