firefox 明确不支持 dirname 属性,既不提交 fname.dir 字段,也不在 formdata 或网络请求中包含方向值;chrome/edge/safari 仅在原生表单提交时支持,且方向值仅限 ltr/rtl,需用 javascript 手动采集并提交。

dirname 属性在 Firefox 中**不提交方向值**——这是当前(2026 年 4 月)的确定事实,不是兼容性待修复的问题,而是 Firefox **明确不支持该属性**。
Firefox 官方不实现 dirname 属性
根据 MDN 和浏览器兼容性数据,Firefox 对 dirname 属性的兼容性状态是「不支持」,且没有计划加入。这不是 bug,而是设计选择:
-
dirname提交的字段名形如fname.dir,但 Firefox 完全忽略该属性,既不添加额外表单字段,也不在FormData或原生提交中包含它 - 即使你在
<input>或<textarea></textarea>上写了dirname="myfield.dir",Firefox 的 Network 面板里也看不到myfield.dir=rtl这类键值对 - 这个行为在 Firefox 123(最新稳定版)和 Developer Edition 中一致,DevTools 的 Form Inspector 也不会显示任何
.dir相关字段
Chrome / Edge / Safari 支持,但仅限原生表单提交
其他主流浏览器虽支持 dirname,但它的作用范围非常窄:
- 只在传统 HTML 表单的
GET或POST提交时生效(即点击<input type="submit">),不会影响fetch()、XMLHttpRequest或FormData构造 - 方向值只有两个可能:
ltr或rtl,由元素当前的dir属性或继承的文本方向决定;不能手动设置 - 若用户未显式设置
dir="rtl",且输入法/系统语言未触发自动 RTL 检测,提交的仍是ltr,哪怕光标从右往左移动
替代方案:用 JavaScript 显式采集方向
要可靠获取并提交文本方向,必须绕过 dirname,改用脚本:
- 监听
input或blur事件,用getComputedStyle(el).direction或检查el.dir获取当前方向 - 手动向
FormData追加方向字段:formData.append("myfield.dir", el.dir || "ltr") - 若需感知用户输入过程中的方向切换(比如混合 LTR/RTL 输入),得用
InputEvent+el.selectionDirection辅助判断,但注意该 API 在 Firefox 中同样受限
真正容易被忽略的是:很多人以为加了 dirname 就“自动适配 RTL”,结果在 Firefox 下完全失效,而测试时又只用 Chrome 看 —— 最终上线才发现阿拉伯语/希伯来语用户的方向信息根本没传到后端。











