2012-04-16 109 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