我的网站出现了一个奇怪的问题。突然,在页面上我收到了JS错误document.getElementById is not a function
。问题是我有一个name="document"
的表单。
似乎如果表单设置了属性name
,则会设置具有相同名称的Javascript中的变量。
我在哪里可以找到相关的规格?
答案 0 :(得分:4)
行为在HTML 5规范的6.3.3 Named access on the Window object部分中定义:
子浏览上下文名称属性集由browsing context names child browsing context active document的supports named properties组成,其supported property names的名称不是空字符串,省略重复项。
Window界面tree order。 child browsing context name property set随时由<a>
中的<applet>
组成,忽略以后的重复:
<area>
。<embed>
,<form>
,<frameset>
,<img>
,<object>
,active document的名称内容属性的值HTML element中具有非空名称内容属性的active document和Fiddle元素,答案 1 :(得分:0)
好像你是对的。 Document支持命名属性。
@Andreas还指出了一个提及此问题的资源:http://w3c.github.io/html/browsers.html#named-access-on-the-window-object
6.3.3。 Window对象上的命名访问:“Window接口支持命名属性。支持的属性名称随时由树形顺序组成,忽略以后的重复项:...所有a,applet的名称内容属性的值,活动文档中具有非空名称内容属性的,area,embed,form,frameset,img和object元素......“ - Andreas
检查一下: https://html.spec.whatwg.org/multipage/dom.html#dom-document-forms
Document接口支持命名属性。支持 任何时刻Document对象文档的属性名称都包含在内 以下,根据贡献的元素按树顺序排列 它们,忽略以后的重复项,以及来自id属性的值 在相同元素之前来自name属性的值之前 贡献两者:
所有applet的名称内容属性的值,被暴露的嵌入, form,iframe,img和具有非空的公开对象元素 名称内容属性,位于文档树中,文档为 他们的根;
所有applet和公开的id内容属性的值 具有非空id内容属性且在其中的对象元素 以文档为根的文档树;和
所有img元素的id内容属性的值 非空id内容属性和非空名称内容 属性,并且位于以文档为根的文档树中。
要确定Document的命名属性名称的值, 用户代理必须使用以下步骤返回获得的值:
让元素成为名称为name的命名元素列表 在以Document为根的文档树中。
根据定义,至少会有一个这样的元素。
如果元素只有一个元素,那个元素就是iframe 元素,iframe元素的嵌套浏览上下文不是 null,然后返回元素嵌套的WindowProxy对象 浏览环境。
否则,如果元素只有一个元素,则返回该元素。
否则返回一个以Document节点为根的HTMLCollection 过滤器仅匹配名称为name的命名元素。
具有名称名称的命名元素,用于上述目的 算法,是那些:
applet,public embed,form,iframe,img或者公开的对象元素 具有名称内容属性,其值为name或applet或 具有id内容属性其值的公开对象元素 是具有id内容属性值的名称或img元素 是名称,并且具有非空名称内容属性 也。如果没有嵌入或对象元素,则称其被暴露 另外,对象元素也是暴露对象的祖先 要么没有显示其后备内容,要么没有对象或嵌入 后代。