diff --git a/src/shared/dom.js b/src/shared/dom.js index 54778d1aaf..2490fe0be8 100644 --- a/src/shared/dom.js +++ b/src/shared/dom.js @@ -203,8 +203,11 @@ export function addResizeListener(element, fn) { object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;'); object.type = 'text/html'; + let win; + object.onload = () => { - object.contentDocument.defaultView.addEventListener('resize', fn); + win = object.contentDocument.defaultView; + win.addEventListener('resize', fn); }; if (/Trident/.test(navigator.userAgent)) { @@ -217,7 +220,7 @@ export function addResizeListener(element, fn) { return { cancel: () => { - object.contentDocument.defaultView.removeEventListener('resize', fn); + win.removeEventListener('resize', fn); element.removeChild(object); } }; diff --git a/test/js/samples/bind-width-height/expected-bundle.js b/test/js/samples/bind-width-height/expected-bundle.js index 4d003e7e85..0787252e8d 100644 --- a/test/js/samples/bind-width-height/expected-bundle.js +++ b/test/js/samples/bind-width-height/expected-bundle.js @@ -26,8 +26,11 @@ function addResizeListener(element, fn) { object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;'); object.type = 'text/html'; + let win; + object.onload = () => { - object.contentDocument.defaultView.addEventListener('resize', fn); + win = object.contentDocument.defaultView; + win.addEventListener('resize', fn); }; if (/Trident/.test(navigator.userAgent)) { @@ -40,7 +43,7 @@ function addResizeListener(element, fn) { return { cancel: () => { - object.contentDocument.defaultView.removeEventListener('resize', fn); + win.removeEventListener('resize', fn); element.removeChild(object); } };