開發者在頁面頂部正確聲明了 <!DOCTYPE html> (或 HTML4/XHTML DTD),但瀏覽器開發工具中顯示文檔模式為「怪異模式」或根本未識別 DOCTYPE,導致瀏覽器自動在 <frameset> 外層插入 <body> 標籤,使 Frameset 布局完全失效。
<head> 中通過 <meta charset="UTF-8"> 聲明編碼,或編碼與實際保存不一致。Content-Type 缺少 charset 或強制指定了錯誤編碼。<frameset>,現代瀏覽器對其兼容性極差,強烈建議遷移至 <iframe> 或單頁應用 (SPA) 架構。<!DOCTYPE html> (HTML5) 或完整 DTD 宣告。<head> 第一行添加 <meta charset="UTF-8">。Content-Type: text/html; charset=UTF-8。document.compatMode,返回 "CSS1Compat" 表示標準模式,"BackCompat" 表示怪異模式。<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Frameset 替代方案示例</title>
<style>
.layout { display: flex; height: 100vh; }
.sidebar { width: 250px; background: #f5f5f5; overflow: auto; }
.main { flex: 1; overflow: auto; }
</style>
</head>
<body>
<div class="layout">
<div class="sidebar"><!-- 左側導航 --></div>
<div class="main">
<iframe src="content.html" style="width:100%;height:100%;border:none;"></iframe>
</div>
</div>
</body>
</html>
Frameset 已被 HTML5 棄用,請採用以下任一現代布局方案:
<iframe> (如上例),兼容性最好,SEO 友好。DOCTYPE 失效通常由文件頭隱藏字符或編碼聲明缺失引起。徹底解決請遷移至 HTML5 + CSS 布局,放棄過時的 Frameset 技術。