diff --git a/inst/www/htmlwidgets.js b/inst/www/htmlwidgets.js
index 821e7ea3..b8379847 100644
--- a/inst/www/htmlwidgets.js
+++ b/inst/www/htmlwidgets.js
@@ -588,20 +588,13 @@
               "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets",
               resizeHandler
             );
-          }
 
-          // This is needed for the specific case of ioslides, which
-          // flips slides between display:none and display:block.
-          // Ideally we would not have to have ioslide-specific code
-          // here, but rather have ioslides raise a generic event,
-          // but the rmarkdown package just went to CRAN so the
-          // window to getting that fixed may be long.
-          if (window.addEventListener) {
-            // It's OK to limit this to window.addEventListener
-            // browsers because ioslides itself only supports
-            // such browsers.
-            on(document, "slideenter", resizeHandler);
-            on(document, "slideleave", resizeHandler);
+            // subscribe to custom shown event fired by ioslides and reveal.js (and
+            // perhaps other slide frameworks). This is necessary because some widgets
+            // (e.g. dygraphs) which start out as display:none have height == 0 and
+            // width == 0 and this doesn't change when it becomes visible
+            window.jQuery(el).closest('slide').on('shown', resizeHandler);
+            window.jQuery(el).closest('section.slide').on('shown', resizeHandler);
           }
         }