鍍金池/ 問答/C#  網(wǎng)絡安全  HTML/ document.getElementsByTagName('iframe')[

document.getElementsByTagName('iframe')[0]無法獲得對象,但若不指定下標0卻可以

問題如下

document.getElementsByTagName('iframe')[0]無法獲得對象
document.getElementsByTagName('iframe')卻可以,這是怎么回事?

代碼及截圖

var ifr = document.getElementsByTagName('iframe');
console.log(ifr);
console.log(ifr[0]);

clipboard.png

回答
編輯回答
命多硬

document.getElementsByTagName('iframe'); 返回的是個動態(tài)集合, 里面的內(nèi)容會在每次取值的時候變化.

如果在 console.log(ifr); 和 console.log(ifr[0]); 兩天語句之間, 頁面內(nèi)的 iframe 被從文檔中移除的話, 那么 console.log(ifr[0]) 此時就會變成 undefined. 題住可以在 console.log(ifr[0]) 后再輸出次 ifr 確定一下是否發(fā)送了這種情況.

console.log(ifr); 
console.log(ifr[0]);
console.log(ifr);  // 確認此時 ifr 是否還有內(nèi)容
2018年6月16日 13:57
編輯回答
孤巷

不知道lz為何取不到,我在網(wǎng)頁上試了一下,是可以取到的。

clipboard.png

2017年11月20日 13:53
編輯回答
墨染殤

你確定那個undefined是ifr[0]的執(zhí)行結(jié)果? 而不是你的console.log(xxxx)?

2017年8月3日 09:55
編輯回答
負我心

沒有重現(xiàn)出來,我在這個頁面試了下,都成功輸出了,麻煩再check一下代碼
clipboard.png

2018年6月25日 22:13
編輯回答
你好胸
frames || window.frames 獲取當前頁面下的所有iframe
frames[index] || window.frames[index] || window.frames[iframe_id] 獲取當前頁面下的某個iframe
frames[index].frameElement.contentWindow 獲取當前頁面下的某個iframe的window
frames[index].frameElement.contentWindow.frames[sub_index].frameElemnet.contentWindow...
希望對你有用
2017年3月14日 04:26