2012-04-16 84 views
4

我正在使用Google Chrome浏览器JavaScript控制台,我只是在查看Gmail页面,只是练习操纵DOM。然而,当我这样做只是回来为空:document.getElementById为一个已知元素返回null - 为什么?

document.getElementById('gbx3'); 

有在具有“gbx3”的ID在页面div元素 - 那么,为什么返回null?什么会/可能造成这种情况?使用Firefox Web控制台也会出现同样的情况。

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

+3

我最好的选择是'gbx'是包含在搜索结果的iframe里面,'的document.getElementById '与您的控制台在相同的范围内工作 – 2012-04-16 12:42:19

回答

8

GMail由框架组成。这其中的工作原理:

frames[3].document.getElementById('gbx3'); 

在一般情况下,如果你知道了iframe元素的ID,该contentDocument属性可以使用(前提是你没有同源问题,该文件被加载):

document.getElementById('hist_frame').contentDocument.getElementById('gbx3'); 
2

按我的评论:

我最好的选择是,GBX的是,包含在搜索结果 的iframe里面,作品的document.getElementById在相同的范围内,你[R 控制台

您可以搜索所有的帧找到你需要的东西:

for(var i = 0; i < frames.length; i++) { 
    var curDoc = frames[i].document; 
    if(curDoc.getElementById('gbx')) console.log(curDoc.getElementById('gbx')); 
} 
+0

用')';关闭'console.log'方法。 – 2012-04-16 12:59:12

+0

@RobW呐喊感谢:) – 2012-04-16 16:51:46

相关问题