diff --git a/src/components/ui/HtmlPreviewModal.tsx b/src/components/ui/HtmlPreviewModal.tsx index a699f97..7b189bd 100644 --- a/src/components/ui/HtmlPreviewModal.tsx +++ b/src/components/ui/HtmlPreviewModal.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useState, useCallback, useEffect, useRef } from 'react'; +import { useState, useCallback, useEffect, useRef, useMemo } from 'react'; import { X, Monitor, @@ -83,6 +83,29 @@ export function HtmlPreviewModal({ // 获取当前设备配置 const currentDevice = deviceConfigs.find((d) => d.type === device) || deviceConfigs[0]; + // 处理 HTML 代码,注入 防止链接影响父窗口 + const processedHtmlCode = useMemo(() => { + const baseTag = ''; + + // 检查是否已经有 标签 + if (/ 标签后注入 + if (/]*>/i.test(htmlCode)) { + return htmlCode.replace(/]*>/i, `$&\n ${baseTag}`); + } + + // 尝试在 标签后注入 + if (/]*>/i.test(htmlCode)) { + return htmlCode.replace(/]*>/i, `$&\n \n ${baseTag}\n `); + } + + // 如果都没有,在最前面添加 + return `${baseTag}\n${htmlCode}`; + }, [htmlCode]); + // ESC 关闭 / F11 全屏切换 useEffect(() => { if (!isOpen) return; @@ -348,7 +371,7 @@ export function HtmlPreviewModal({ {/* iframe 预览 */}