diff --git a/dlls/shdocvw/oleobject.c b/dlls/shdocvw/oleobject.c
index ad657b8235b647df95472fccc0473ea6bdf2ad85..488b06c0806c7ba7fa254d7993f8f128e127e370 100644
--- a/dlls/shdocvw/oleobject.c
+++ b/dlls/shdocvw/oleobject.c
@@ -212,6 +212,20 @@ static HRESULT get_client_disp_property(IOleClientSite *client, DISPID dispid, V
     return hres;
 }
 
+static HRESULT on_offlineconnected_change(WebBrowser *This)
+{
+    VARIANT offline;
+
+    get_client_disp_property(This->client, DISPID_AMBIENT_OFFLINEIFNOTCONNECTED, &offline);
+
+    if(V_VT(&offline) == VT_BOOL)
+        IWebBrowser2_put_Offline(WEBBROWSER2(This), V_BOOL(&offline));
+    else if(V_VT(&offline) != VT_EMPTY)
+        WARN("wrong V_VT(silent) %d\n", V_VT(&offline));
+
+    return S_OK;
+}
+
 static HRESULT on_silent_change(WebBrowser *This)
 {
     VARIANT silent;
@@ -683,6 +697,8 @@ static HRESULT WINAPI OleControl_OnAmbientPropertyChange(IOleControl *iface, DIS
     TRACE("(%p)->(%d)\n", This, dispID);
 
     switch(dispID) {
+    case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED:
+        return on_offlineconnected_change(This);
     case DISPID_AMBIENT_SILENT:
         return on_silent_change(This);
     }