别碰 和 ,它们在 HTML5 中已被废弃,现代浏览器虽可能勉强渲染,但不支持 JavaScript 跨 frame 通信、无响应式能力、SEO 彻底失效,且无法通过无障碍检测。

直接说结论:别碰 <frameset></frameset> 和 <frame>,它们在 HTML5 中已被废弃,现代浏览器虽可能勉强渲染,但不支持 JavaScript 跨 frame 通信、无响应式能力、SEO 彻底失效,且无法通过无障碍检测。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
为什么不能继续用 <frameset></frameset> 做表格布局
很多人误以为“框架”能用来做左右分栏表格(比如左导航+右数据表),但 <frameset></frameset> 的设计目标从来不是结构化数据展示,而是加载多个独立文档。它和 <table> 完全无关,强行混用会导致:
<ul><li>
<code><frameset></frameset> 内无法使用 CSS Grid/Flex 布局,<table> 也无法嵌套在 <code><frame> 中作为子文档主体(除非你另建一堆 HTML 文件)
<frame> 是隔离的 DOM 上下文,document.querySelector 在父页查不到子 frame 里的 <table>,调试和自动化测试基本瘫痪
<li>移动端 Safari 和 Chrome for Android 会直接忽略 <code><frameset></frameset>,降级为白屏或只显示第一个 <frame> 的内容表格结构本身怎么重构才真正有效
真正的“表格重构”,是把语义混乱、嵌套过深、纯靠 colspan/rowspan 撑起来的老式 <table>,改成符合 HTML5 语义、可访问、易维护的结构。重点不在删表格,而在改写法:
<ul><li>必须补全 <code><thead> / <code><tbody>(老代码常只用 <code><tr> 堆砌,导致 JS 操作时找不到逻辑边界)
<li><code><th> 必须带 <code>scope="col" 或 scope="row",否则屏幕阅读器无法建立行列关联
<table border="1"> 这类 presentational 属性,样式全部交由 CSS 控制(<code>border-collapse: collapse + border)
<table>,该换 <code>bootstrap-table-treegrid 或手写 <details></details>/<summary></summary> 折叠结构
替换 <frameset></frameset> 的最小改动方案
如果你的旧项目是“左菜单 frame + 右主内容 frame”,而主内容里刚好有个大表格,那重构路径很明确:保留表格,干掉框架。用现代 CSS 实现同等布局:
立即学习“前端免费学习笔记(深入)”;
- 用
display: flex或display: grid替代cols="20%,80%"—— 例如grid-template-columns: 250px 1fr - 左侧导航用
<nav></nav>,右侧表格区域用<main></main>包裹整个<table>,语义清晰且无需跨文档通信 <li>原 <code><frame>的name属性(如name="mainFrame")通常被 JS 用来window.frames['mainFrame'].location.href=...,现在直接改用history.pushState+ 单页路由,或最简方案:给右侧<div id="content">,然后 <code>document.getElementById('content').innerHTML = ... - 注意:老项目中可能有
<a target="mainFrame"></a>,这类链接必须批量替换成 JS 事件监听或标准<a href="#section"></a>锚点跳转
最容易被忽略的一点:重构后表格的键盘导航(Tab 键顺序)和焦点管理不会自动继承原框架行为。如果原框架中按 Tab 会从左栏跳到右栏表格首单元格,现在得手动加 tabindex="0" 和 focus() 调度,否则残障用户会卡死在导航栏里出不来。


















