对于已知元素,document.getElementById返回null - 为什么?

Har*_*rry 4 javascript firefox gmail google-chrome

我正在使用Google Chrome JavaScript控制台,我只是在查看Gmail页面,只是练习操作DOM.但是,当我执行以下操作时,它只会返回null:

document.getElementById('gbx3');
Run Code Online (Sandbox Code Playgroud)

有一个div在具有"gbx3"的ID在页面元素-那么,为什么返回null?会导致什么/可能导致这种情况?使用Firefox Web控制台也会发生同样的事情.

如果您尝试访问'gb'同一Gmail页面中的ID(这是主要顶部工具栏),则会返回null,但如果您在google.com上访问此元素,则会返回该元素.

Rob*_*b W 8

GMail由框架组成.这个工作:

frames[3].document.getElementById('gbx3');
Run Code Online (Sandbox Code Playgroud)

通常,如果您知道iframe元素的ID,则contentDocument可以使用该属性(假设您没有同源问题,并且文档已加载):

document.getElementById('hist_frame').contentDocument.getElementById('gbx3');
Run Code Online (Sandbox Code Playgroud)