diff --git a/app/success/page.jsx b/app/success/page.jsx index ceef2bb..eaf653f 100644 --- a/app/success/page.jsx +++ b/app/success/page.jsx @@ -45,7 +45,47 @@ function SuccessContent() { } try { - window.close(); + // 检查历史记录状态 + const historyLength = window.history.length; + console.log(`历史记录长度: ${historyLength}`); + + if (historyLength > 1) { + console.log("检测到历史记录,尝试返回上一页"); + // 如果有历史记录,往前跳转两级 + window.history.go(-2); + + // 设置一个短暂的延迟,检查是否成功跳转 + setTimeout(() => { + // 如果页面仍然存在,可能跳转失败,尝试其他方法 + if (document.visibilityState !== "hidden") { + console.log("返回上一页可能失败,尝试返回一级"); + window.history.back(); + } + }, 200); + + return; + } + + console.log("无历史记录,尝试关闭窗口"); + // 如果没有历史记录,尝试关闭窗口 + // 尝试多种方法关闭窗口 + const isOpener = window.opener && !window.opener.closed; + + if (isOpener) { + // 如果是从另一个窗口打开的,尝试通知父窗口 + try { + // 只有在同源的情况下才能访问 opener + window.opener.focus(); + console.log("尝试聚焦父窗口"); + } catch (e) { + console.log("无法访问opener,可能是跨域限制", e); + } + } + + // 尝试关闭窗口 + console.log("尝试关闭窗口"); + const closingAttempt = window.close(); + console.log("关闭窗口结果:", closingAttempt); // 设置一个短暂的延迟,检查页面是否仍然打开 setTimeout(() => { @@ -71,6 +111,20 @@ function SuccessContent() { } }; + // 获取关闭页面的提示文本 + const getCloseInstructions = () => { + const hasHistory = window.history.length > 1; + + if (hasHistory) { + return "将返回之前的页面"; + } else { + return "请点击浏览器右上角的 × 关闭此页面"; + } + }; + + // 用于调试的历史记录信息 + const historyInfo = `历史记录长度: ${window.history.length}`; + return (
+ {closeAttempted && !redirectUrl && ( +

+ {getCloseInstructions()} +

+ )} + + {process.env.NODE_ENV === "development" && ( +

{historyInfo}

+ )} +
);