queryInterface exception

Li Li <[email protected]> Wed, 27 Jan 2010 11:54:16 +0800
Newsgroups gmane.comp.mozilla.devel.java
Message-ID <[email protected]>
I want to get element position and width.
I tried this codes but it throws an exception, my os is windows xp and
xulrunner is 1.8.1.3 and swt is 3.448. Thank you.

nsIDOMElement elem = (nsIDOMElement)
node.queryInterface(nsIDOMElement.NS_IDOMELEMENT_IID); //it works.  node is
a nsIDOMNode
nsIDOMNSHTMLElement domnshtmlElement =
(nsIDOMNSHTMLElement)node.queryInterface(nsIDOMNSHTMLElement.NS_IDOMNSHTMLELEMENT_IID);
//it throws an exception
//nsIDOMNSHTMLElement domnshtmlElement =
(nsIDOMNSHTMLElement)elem.queryInterface(nsIDOMNSHTMLElement.NS_IDOMNSHTMLELEMENT_IID);
//also fail to work
System.out.println("left:" +domnshtmlElement.getClientLeft());
System.out.println("top:" +domnshtmlElement.getClientTop());
System.out.println("width:" +domnshtmlElement.getClientWidth());
System.out.println("height:" +domnshtmlElement.getClientHeight());


Full printStack is:
Exception in thread "main" org.mozilla.xpcom.XPCOMException: The function
"QueryInterface" returned an error condition  (0x80004002)
    at org.mozilla.xpcom.internal.XPCOMJavaProxy.callXPCOMMethod(Native
Method)
    at
org.mozilla.xpcom.internal.XPCOMJavaProxy.invoke(XPCOMJavaProxy.java:143)
    at $Proxy4.queryInterface(Unknown Source)
    at test.LadyrBrowser$11.handleEvent(LadyrBrowser.java:354)
    at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
    at test.LadyrBrowser.<init>(LadyrBrowser.java:414)
    at test.LadyrBrowser.main(LadyrBrowser.java:512)