diff --git a/dlls/mshtml/htmlelem2.c b/dlls/mshtml/htmlelem2.c
index 4430703a14a..6ef30981c87 100644
--- a/dlls/mshtml/htmlelem2.c
+++ b/dlls/mshtml/htmlelem2.c
@@ -397,8 +397,20 @@ static HRESULT WINAPI HTMLElement2_get_tabIndex(IHTMLElement2 *iface, short *p)
static HRESULT WINAPI HTMLElement2_focus(IHTMLElement2 *iface)
{
HTMLElement *This = HTMLELEM2_THIS(iface);
- FIXME("(%p)\n", This);
- return E_NOTIMPL;
+ nsIDOMNSHTMLElement *nselem;
+ nsresult nsres;
+
+ TRACE("(%p)\n", This);
+
+ nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMNSHTMLElement, (void**)&nselem);
+ if(NS_SUCCEEDED(nsres)) {
+ nsIDOMNSHTMLElement_focus(nselem);
+ nsIDOMNSHTMLElement_Release(nselem);
+ }else {
+ ERR("Could not get nsIDOMHTMLNSElement: %08x\n", nsres);
+ }
+
+ return S_OK;
}
static HRESULT WINAPI HTMLElement2_put_accessKey(IHTMLElement2 *iface, BSTR v)