차량 모니터 복귀 링크 같은 페이지 제외
This commit is contained in:
+40
-3
@@ -2338,6 +2338,7 @@ $carMonitorSession = car_monitor_launcher_session();
|
||||
let calibrationModalOpen = false;
|
||||
let calibrationSaveInFlight = false;
|
||||
const FALLBACK_BACK_TARGET = 'https://chaegeon.com/';
|
||||
const BACK_HISTORY_KEY = 'chaegeon.backHistory.v1';
|
||||
const BACK_LINK_PATH_TITLE = {
|
||||
'/': '채건닷컴',
|
||||
'/home': '홈',
|
||||
@@ -2405,6 +2406,38 @@ $carMonitorSession = car_monitor_launcher_session();
|
||||
return BACK_LINK_PATH_TITLE[parsed.pathname.replace(/\/$/, '') || '/'] || cleanPageTitle(parsed.pathname.split('/').filter(Boolean).pop() || '');
|
||||
}
|
||||
|
||||
function backPageKey(url) {
|
||||
const parsed = sameSiteUrl(url);
|
||||
if (!parsed) return '';
|
||||
const pathname = parsed.pathname.replace(/\/+$/, '') || '/';
|
||||
return `${parsed.hostname.replace(/^www\./, '')}${pathname}`;
|
||||
}
|
||||
|
||||
function rememberBackHistory() {
|
||||
try {
|
||||
const current = new URL(location.href);
|
||||
const list = JSON.parse(sessionStorage.getItem(BACK_HISTORY_KEY) || '[]')
|
||||
.filter(item => item && item.href && item.key);
|
||||
const entry = { href: current.href, key: backPageKey(current.href), time: Date.now() };
|
||||
const last = list[list.length - 1];
|
||||
const next = last && last.href === entry.href ? list : [...list, entry];
|
||||
sessionStorage.setItem(BACK_HISTORY_KEY, JSON.stringify(next.slice(-20)));
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function storedBackTarget(currentKey) {
|
||||
try {
|
||||
const list = JSON.parse(sessionStorage.getItem(BACK_HISTORY_KEY) || '[]');
|
||||
for (let i = list.length - 1; i >= 0; i--) {
|
||||
const item = list[i];
|
||||
if (item?.href && item.key && item.key !== currentKey && sameSiteUrl(item.href)) {
|
||||
return item.href;
|
||||
}
|
||||
}
|
||||
} catch (e) {}
|
||||
return '';
|
||||
}
|
||||
|
||||
function updateBackLinkLabel(label) {
|
||||
const link = document.getElementById('blogBackLink');
|
||||
if (!link) return;
|
||||
@@ -2414,13 +2447,17 @@ $carMonitorSession = car_monitor_launcher_session();
|
||||
async function resolveBackTarget() {
|
||||
const ref = sameSiteUrl(document.referrer || '');
|
||||
const current = new URL(location.href);
|
||||
const target = ref && ref.href !== current.href ? ref.href : FALLBACK_BACK_TARGET;
|
||||
const currentKey = backPageKey(current.href);
|
||||
rememberBackHistory();
|
||||
const refIsDifferentPage = ref && backPageKey(ref.href) !== currentKey;
|
||||
const target = refIsDifferentPage ? ref.href : (storedBackTarget(currentKey) || FALLBACK_BACK_TARGET);
|
||||
const knownLabel = titleFromBackUrl(target);
|
||||
let label = knownLabel;
|
||||
const targetUrl = sameSiteUrl(target);
|
||||
|
||||
if (!knownLabel && ref && ref.origin === location.origin) {
|
||||
if (!knownLabel && targetUrl && targetUrl.origin === location.origin) {
|
||||
try {
|
||||
const res = await fetch(ref.href, { credentials: 'same-origin', cache: 'force-cache' });
|
||||
const res = await fetch(targetUrl.href, { credentials: 'same-origin', cache: 'force-cache' });
|
||||
if (res.ok) {
|
||||
const html = await res.text();
|
||||
const doc = new DOMParser().parseFromString(html, 'text/html');
|
||||
|
||||
Reference in New Issue
Block a user