是的,在HTML5中被彻底移除,因其破坏语义结构、损害可访问性与SEO、违背响应式设计原则;应改用CSS Grid/Flexbox布局+带ARIA属性的,或采用服务端包含、SPA组件化路由等现代方案。
是的, 在 HTML5 中被彻底移除,不再被任何现代浏览器支持——不是“不推荐”,而是语法无效,解析时会被忽略或触发 quirks mode。
被砍掉?它破坏了基本的文档语义结构、阻碍可访问性(屏幕阅读器难以导航)、干扰 SEO(搜索引擎无法合理判断 frame 内容归属)、且与现代响应式设计完全冲突。HTML5 的设计原则是“内容优先、语义清晰、单页可控”,而 让页面变成多个独立文档上下文,违背这一前提。
+ CSS 布局模拟 frameset 行为 本身没被废弃,仍是 HTML5 标准元素,但用法和定位完全不同:它是嵌入式内容容器,必须放在常规流式文档中,由父页面统一控制样式与交互。
→ 改用 CSS Grid 或 Flexbox 划分区域,再在每个区域放
→ 替换为 ,并手动加 title 和 ARIA 属性提升可访问性parent.frames[1].location.href)→ 改用 postMessage(),且必须校验 event.origin
如果原 frameset 是为了“固定导航+动态内容”,现在主流做法是:
include 'header.php';、Jinja2 {% include 'nav.html' %})生成完整 HTML,避免客户端拆分 + 或 )复用布局组件,内容按需加载fetch() 加载 HTML 片段后注入 ,比 iframe 更轻量、无跨域/cookie 隔离问题
真正难迁移的不是技术实现,而是旧系统里隐含的 frame 间全局变量共享、document.write 覆盖、以及 onload 顺序依赖——这些在 iframe 或 SPA 下都得重写逻辑,不能只换标签。