diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index d5729b1a27f..033800b48e0 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -4267,7 +4267,16 @@ static event_target_t **HTMLElement_get_event_target_ptr(DispatchEx *dispex)
static void HTMLElement_bind_event(DispatchEx *dispex, int eid)
{
HTMLElement *This = impl_from_DispatchEx(dispex);
- This->node.doc->node.event_target.dispex.data->vtbl->bind_event(&This->node.doc->node.event_target.dispex, eid);
+
+ static const WCHAR loadW[] = {'l','o','a','d',0};
+
+ switch(eid) {
+ case EVENTID_LOAD:
+ add_nsevent_listener(This->node.doc, This->node.nsnode, loadW);
+ return;
+ default:
+ This->node.doc->node.event_target.dispex.data->vtbl->bind_event(&This->node.doc->node.event_target.dispex, eid);
+ }
}
static const tid_t HTMLElement_iface_tids[] = {