4

私は Google Chrome JavaScript コンソールを使用しており、Gmail ページを見て DOM の操作を練習していました。ただし、次のことを行うと、null として返されます。

document.getElementById('gbx3');

ページに 'gbx3' の ID を持つ要素がありdivます - なぜ null を返すのでしょうか? 何が原因でしょうか?Firefox Web コンソールを使用しても同じことが起こります。

同じ Gmail ページで id (メインのトップ ツールバー) にアクセスしようとすると、'gb'null が返されますが、google.com でこの要素にアクセスすると、要素が返されます。

4

2 に答える 2

8

GMail はフレームで構成されています。これは機能します:

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

一般に、iframe 要素の ID がわかっている場合は、contentDocumentプロパティを使用できます (同一生成元の問題がなく、ドキュメントが読み込まれている場合)。

document.getElementById('hist_frame').contentDocument.getElementById('gbx3');
于 2012-04-16T12:43:53.293 に答える
2

私のコメントによると:

私の最善の策は、gbx が検索結果を含む iframe 内にあり、document.getElementById がコンソールと同じスコープで機能することです。

すべてのフレームを検索して、必要なものを見つけることができます。

for(var i = 0; i < frames.length; i++) {
   var curDoc = frames[i].document;
   if(curDoc.getElementById('gbx')) console.log(curDoc.getElementById('gbx'));
}
于 2012-04-16T12:46:27.470 に答える