Hi,

to get sytle information from elements nodes, here is how I make it 
(don't know if a simpler way exist) :

1. QI the nsIDOMDocument to get the nsIDOMDocumentView
2. get the nsIDOMAbstractView by calling 
nsIDOMDocumentView::GetDefaultView()
3. QI the nsIDOMAbstractView to get the nsIDOMViewCSS
4. QI the nsIDOMNode you want to get the sytle to get the nsIDOMElement 
it refers to
5. get the nsIDOMCSSStyleDeclaration by calling the 
nsIDOMViewCSS::GetComputedStyle() method
6. call the nsIDOMCSSStyleDeclaration::GetPropertyValue() to get the 
sytle information you want !

Olivier

Here is my code snippet

         nsCOMPtr<nsIDOMDocument> doc = 0;
         nsCOMPtr<nsIDOMDocumentView> dv = 0;
         nsCOMPtr<nsIDOMViewCSS> view = 0;
         nsCOMPtr<nsIDOMElement> element;
         nsIDOMCSSStyleDeclaration *style;
         nsString prop_value;
         nsresult rv;

         rv = NS_STATIC_CAST(nsIDOMNode *, 
N)->GetOwnerDocument(getter_AddRefs(doc));
         if( NS_SUCCEEDED(rv) && doc ) {
                 nsCOMPtr<nsIDOMDocumentView> dom_view = 
do_QueryInterface(doc, &rv);
                 if( NS_SUCCEEDED(rv) && dom_view ) {
                         nsCOMPtr<nsIDOMAbstractView> abtract_view = 0;
                         rv = 
dom_view->GetDefaultView(getter_AddRefs(abtract_view));
                         if( NS_SUCCEEDED(rv) && abtract_view ) {
                                 view = do_QueryInterface(abtract_view, 
&rv);
                                 element = 
do_QueryInterface(NS_STATIC_CAST(nsIDOMNode *, N));
                                 if( NS_SUCCEEDED(rv) && view && element ) {
                                         rv = 
view->GetComputedStyle(element, EmptyString(), &style);
                                         if( NS_SUCCEEDED(rv) && style ) {
                                                 for(unsigned int i=0; 
i<count; ++i) {
                                                         rv = 
style->GetPropertyValue(
 
NS_ConvertASCIItoUTF16(properties[i].c_str()),
 
                                     prop_value);
                                                         if( 
NS_SUCCEEDED(rv) ) {
 
values[i] = NS_ConvertUTF16toUTF8(prop_value).get();
                                                         }
                                                 }
                                                 return OK;
                                         }
                                 }
                         }
                 }
         }


Emil Wikström wrote:
> Hi all,
> 
> How can I get DOM layout information from my embedded browser?
> 
> I need stuff like with, height & offsets from document and elements.
> 
> Thx
> /Emil
> 
> 
> 
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding

Reply via email to