diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 670c6151957..244661f9179 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -745,8 +745,27 @@ static HRESULT WINAPI HTMLElement_get_offsetWidth(IHTMLElement *iface, long *p)
static HRESULT WINAPI HTMLElement_get_offsetHeight(IHTMLElement *iface, long *p)
{
HTMLElement *This = HTMLELEM_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ PRInt32 offset = 0;
+ nsresult nsres;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_FAILED(nsres)) {
+ ERR("Could not get nsIDOMNSHTMLElement: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ nsres = nsIDOMNSHTMLElement_GetOffsetHeight(nselem, &offset);
+ nsIDOMNSHTMLElement_Release(nselem);
+ if(NS_FAILED(nsres)) {
+ ERR("GetOffsetHeight failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ *p = offset;
+ return S_OK;
}
static HRESULT WINAPI HTMLElement_get_offsetParent(IHTMLElement *iface, IHTMLElement **p)
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index ecdc0c61c55..e7a2907b12f 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -496,6 +496,9 @@ static void _test_elem_offset(unsigned line, IUnknown *unk)
hres = IHTMLElement_get_offsetTop(elem, &l);
ok_(__FILE__,line) (hres == S_OK, "get_offsetTop failed: %08x\n", hres);
+ hres = IHTMLElement_get_offsetHeight(elem, &l);
+ ok_(__FILE__,line) (hres == S_OK, "get_offsetHeight failed: %08x\n", hres);
+
IHTMLElement_Release(elem);
}