2010-11-14 52 views
3

我想開發一個Firefox擴展。下面的代碼:getElementsByTagName(「div」)。長度爲任何網頁返回零

var divList = document.getElementsByTagName("div") ; 
Components.utils.reportError("num of divs = " + divList.length) ; 

總是說: - 的div = NUM​​個0

我不明白的是,我在這一段簡單的代碼我做了錯誤。當我將"div"替換爲"*"時,我在任何網頁上總能得到1100左右的值。

回答

0

不確定擴展上下文有什麼區別,但它可能與名稱空間有關 - https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName。使用「*」時獲得的1100個元素中的第一個元素的標籤是什麼?

+0

nodeName是窗口。 – euphoria83 2010-11-14 19:35:35

+0

這是什麼意思?哪個元素具有nodeName窗口? – euphoria83 2010-11-14 19:38:44

+0

從這篇文章:http://blog.mozilla.com/addons/2009/01/28/how-to-develop-a-firefox-extension/似乎你需要'content.document.getElementsByTagName' – 2010-11-14 19:39:59

4

可能是代碼在DOM未準備好時運行。

嘗試將JS代碼放在body標記末尾的script標記內。
我不知道爲什麼*有這麼多的項目。

+0

我在完成加載頁面後單擊statusbarpanel按鈕來運行代碼。 – euphoria83 2010-11-14 19:32:19

+0

不是一個好消息:/ – Mic 2010-11-14 19:33:41

+0

您是否嘗試過'document.body.getElementsByTagName'? – Mic 2010-11-14 19:34:29

相關問題