Index: src/engine/Main.cpp
===================================================================
--- a/src/engine/Main.cpp
+++ b/src/engine/Main.cpp
@@ -196,6 +196,14 @@
         response << (match && match->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION);
         break;
       }
+      case Communication::PROC_IS_ELEMHIDE_WHITELISTED_ON_URL:
+      {
+        std::string url;
+        request >> url;
+        AdblockPlus::FilterPtr match = filterEngine->Matches(url, "ELEMHIDE", url);
+        response << (match && match->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION);
+        break;
+      }
       case Communication::PROC_ADD_FILTER:
       {
         std::string text;
Index: src/plugin/AdblockPlusClient.cpp
===================================================================
--- a/src/plugin/AdblockPlusClient.cpp
+++ b/src/plugin/AdblockPlusClient.cpp
@@ -281,6 +281,20 @@
   return isWhitelisted;
 }
 
+bool CAdblockPlusClient::IsElemhideWhitelistedOnDomain(const std::wstring& url)
+{
+  Communication::OutputBuffer request;
+  request << Communication::PROC_IS_ELEMHIDE_WHITELISTED_ON_URL << ToUtf8String(url);
+
+  Communication::InputBuffer response;
+  if (!CallEngine(request, response)) 
+    return false;
+
+  bool isWhitelisted;
+  response >> isWhitelisted;
+  return isWhitelisted;
+}
+
 int CAdblockPlusClient::GetIEVersion()
 {
   //HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer
Index: src/plugin/AdblockPlusClient.h
===================================================================
--- a/src/plugin/AdblockPlusClient.h
+++ b/src/plugin/AdblockPlusClient.h
@@ -53,6 +53,7 @@
 
   bool IsElementHidden(const CString& tag, IHTMLElement* pEl, const CString& domain, const CString& indent, CPluginFilter* filter);
   bool IsWhitelistedUrl(const std::wstring& url);
+  bool IsElemhideWhitelistedOnDomain(const std::wstring& url);
 
   int GetIEVersion();
 
Index: src/plugin/PluginTabBase.cpp
===================================================================
--- a/src/plugin/PluginTabBase.cpp
+++ b/src/plugin/PluginTabBase.cpp
@@ -183,7 +183,9 @@
 void CPluginTabBase::OnDownloadComplete(IWebBrowser2* browser)
 {
 #ifdef SUPPORT_DOM_TRAVERSER
-  if (!CPluginClient::GetInstance()->IsWhitelistedUrl(std::wstring(GetDocumentUrl())))
+  CPluginClient* client = CPluginClient::GetInstance();
+  std::wstring url = std::wstring(GetDocumentUrl());
+  if (!client->IsWhitelistedUrl(url) && !client->IsElemhideWhitelistedOnDomain(url))
   {
     m_traverser->TraverseDocument(browser, GetDocumentDomain(), GetDocumentUrl());
   }
Index: src/shared/Communication.h
===================================================================
--- a/src/shared/Communication.h
+++ b/src/shared/Communication.h
@@ -25,6 +25,7 @@
     PROC_UPDATE_ALL_SUBSCRIPTIONS,
     PROC_GET_EXCEPTION_DOMAINS,
     PROC_IS_WHITELISTED_URL,
+    PROC_IS_ELEMHIDE_WHITELISTED_ON_URL,
     PROC_ADD_FILTER,
     PROC_REMOVE_FILTER,
     PROC_SET_PREF,
