2010-04-07 70 views
0

我正在使用C++編寫Firefox擴展。 我想訪問「TabOpen」事件處理程序中的XUL:tabox元素,但我無法訪問任何XUL元素。使用C++訪問XUL匿名內容

我在這裏把我的擴展僞代碼以供參考:

HandleEvent() 
{ 
    if (event type is TabOpen) 
    { 
    nsCOMPtr<nsIDOMNode> OriginalNode = do_QueryInterface(event->GetTarget); 
    nsCOMPtr<nsIDOMNodeList> childlist; 

     // 
     // Note here that I got OriginalNode's local name as "tabbrowser" 
     // 

    OriginalNode->GetChildNodes(getter_AddRefs(childlist)); 
    PRUint32 len; 
    childlist->GetLength(&len); // Return 1; consider only "popup" child element. 

    nsString localName; 
    nsCOMPtr<nsIDOMNode> node1; 
    childlist->Item(0, getter_AddRefs(node1)); 
    node1->GetLocalName(localName); // Returns "popup" as the local name. 
    } 
} 

通過遍歷通過DOM Inspector中的DOM樹,我才知道,XUL元素是匿名內容。

如何訪問這些XUL元素?

非常感謝,

Vaibhav。

回答

0

我得到了使用nsIDOMDocumentXBL接口的解決方案。

每個DOM Document都實現了nsIDOMDocumentXBL接口。

如果有任何問題,它可能是IID變更。

Vaibhav。