/** * ExternalLinkDebug.tsx — 外链调起调试面板(临时诊断用)。 * * 固定在桌面左上角,展示当前环境判定与最近日志;三个测试按钮分别走 * openExternalLink / openInAppWebView,逐段确认容器为何无法调起。 */ import { useCallback, useState } from "react"; import { openExternalLink, openInAppWebView, isDesktopTauriRuntime, } from "../../utils/openExternalLink"; import { isOsPath } from "../../utils/navigationMode"; import { getPyWebViewApi } from "../../utils/pywebview"; const TEST_URL = "https://www.baidu.com"; const TRUST_URL = "https://news.infoepoch.cn"; export default function ExternalLinkDebug() { const [logs, setLogs] = useState([]); const [collapsed, setCollapsed] = useState(false); const log = useCallback((msg: string) => { console.log(`[ext-debug] ${msg}`); setLogs((prev) => [...prev.slice(-14), msg]); }, []); const env = (() => { let pywebview = false; try { pywebview = !!getPyWebViewApi()?.open_external_link; } catch { /* ignore */ } return { tauri: isDesktopTauriRuntime(), osPath: isOsPath(window.location.pathname), pathname: window.location.pathname, pywebview, }; })(); const run = (fn: () => void, label: string) => { log(`▶ ${label} url=${TEST_URL}`); try { fn(); log(" 调用已同步返回(异步结果见后续日志)"); } catch (e) { log(` ✗ 同步抛错: ${String(e)}`); } }; return (
外链调试
{!collapsed && ( <>
tauri={String(env.tauri)} osPath={String(env.osPath)} pywebview={String(env.pywebview)}
path={env.pathname}
{logs.length === 0 ? (
(暂无日志,点击上方按钮)
) : ( logs.map((l, i) => (
{l}
)) )}
)}
); }