From 2f9dbc3fd6a9b3ff73b6b24e2e382c545c24fe17 Mon Sep 17 00:00:00 2001 From: Daniel Brain Date: Mon, 6 Nov 2017 19:19:32 -0800 Subject: [PATCH] Fix bridge cleanup logic --- src/bridge/parent.js | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/bridge/parent.js b/src/bridge/parent.js index 2fec0714..16413b0c 100644 --- a/src/bridge/parent.js +++ b/src/bridge/parent.js @@ -125,31 +125,24 @@ export function openBridge(url : string, domain : string) : ZalgoPromise { - return new ZalgoPromise((resolve, reject) => { - - setTimeout(resolve, 1); - - }).then(() => { + body.appendChild(iframe); - body.appendChild(iframe); + let bridge = iframe.contentWindow; - let bridge = iframe.contentWindow; + listenForRegister(bridge, domain); - listenForRegister(bridge, domain); - - return new ZalgoPromise((resolve, reject) => { + return new ZalgoPromise((resolve, reject) => { - iframe.onload = resolve; - iframe.onerror = reject; + iframe.onload = resolve; + iframe.onerror = reject; - }).then(() => { + }).then(() => { - return onWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${url}`); + return onWindowReady(bridge, CONFIG.BRIDGE_TIMEOUT, `Bridge ${url}`); - }).then(() => { + }).then(() => { - return bridge; - }); + return bridge; }); }); }); @@ -215,9 +208,10 @@ export function linkUrl(win : CrossDomainWindowType, url : string) { export function destroyBridges() { for (let domain of Object.keys(global.bridgeFrames)) { let frame = global.bridgeFrames[domain]; - if (frame && frame.parentNode) { + if (frame.parentNode) { frame.parentNode.removeChild(frame); } } + global.bridgeFrames = {}; global.bridges = {}; } \ No newline at end of file