name属性为提供javascript可直接引用的全局标识符,使其自动挂载到window对象下成为全局变量;需写在开始标签内且值为合法字符串,不参与表单提交。

object 的 name 属性到底起什么作用
name 属性在 <object></object> 标签里不是用来提交表单的(那是 <input> 的事),而是为该嵌入对象提供一个**JavaScript 可直接引用的全局标识符**。它和 id 类似,但关键区别在于:name 会让这个 <object></object> 自动挂载到 window 对象下,变成一个可直接调用的全局变量(前提是没被其他同名变量覆盖)。
怎么写才有效:语法与常见错误
必须写在 <object></object> 开始标签内,值是纯字符串,不能含空格或特殊字符:
<object data="chart.svg" type="image/svg+xml" name="chartObj"></object>
- ✅ 正确:
name="chartObj"、name="pdfViewer" - ❌ 错误:
name="my chart"(含空格)、name="chart-1"(部分旧版 IE 可能拒绝解析为全局变量)、name=""(空值无效) - ⚠️ 注意:
name值不强制唯一,但若多个<object></object>用了相同name,JS 中通过window.name访问时只会拿到最后一个——这容易引发静默覆盖
JS 中怎么用 name 获取 object 实例
只要页面加载完成且 <object></object> 已渲染,就能直接用变量名访问(前提是没被局部作用域遮蔽):
console.log(chartObj); // 输出 HTMLObjectElement 实例<br>chartObj.contentDocument?.getElementById("tooltip"); // 访问 SVG 内部 DOM
- 等价写法:
document.getElementsByName("chartObj")[0]或document.querySelector('object[name="chartObj"]'),但不如直接变量名简洁 - ⚠️ 安全前提:确保脚本执行时机晚于
<object></object>解析(推荐放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











