@@ -18,17 +18,22 @@ function getBridgeName(domain) {
18
18
return id ;
19
19
}
20
20
21
- function documentReady ( ) {
22
- return new promise . Promise ( resolve => {
21
+
22
+ let documentBodyReady = new promise . Promise ( resolve => {
23
+
24
+ if ( window . document && window . document . body ) {
25
+ return resolve ( window . document . body ) ;
26
+ }
27
+
28
+ let interval = setInterval ( ( ) => {
23
29
if ( window . document && window . document . body ) {
24
- return resolve ( window . document ) ;
30
+ clearInterval ( interval ) ;
31
+ return resolve ( window . document . body ) ;
25
32
}
33
+ } , 10 ) ;
34
+ } ) ;
35
+
26
36
27
- window . document . addEventListener ( 'DOMContentLoaded' , event => {
28
- return resolve ( window . document ) ;
29
- } ) ;
30
- } ) ;
31
- }
32
37
33
38
function getRemoteBridgeForWindow ( win ) {
34
39
try {
@@ -390,25 +395,33 @@ export function openBridge(url, domain) {
390
395
391
396
let iframe = openBridgeFrame ( name , url ) ;
392
397
393
- return documentReady ( ) . then ( document => {
394
- document . body . appendChild ( iframe ) ;
395
-
396
- let bridge = iframe . contentWindow ;
397
-
398
- listenForRegister ( bridge , domain ) ;
398
+ return documentBodyReady . then ( body => {
399
399
400
400
return new promise . Promise ( ( resolve , reject ) => {
401
401
402
- iframe . onload = resolve ;
403
- iframe . onerror = reject ;
402
+ setTimeout ( resolve , 1 ) ;
404
403
405
404
} ) . then ( ( ) => {
406
405
407
- return onWindowReady ( bridge , CONFIG . BRIDGE_TIMEOUT , `Bridge ${ url } ` ) ;
406
+ body . appendChild ( iframe ) ;
408
407
409
- } ) . then ( ( ) => {
408
+ let bridge = iframe . contentWindow ;
409
+
410
+ listenForRegister ( bridge , domain ) ;
411
+
412
+ return new promise . Promise ( ( resolve , reject ) => {
413
+
414
+ iframe . onload = resolve ;
415
+ iframe . onerror = reject ;
410
416
411
- return bridge ;
417
+ } ) . then ( ( ) => {
418
+
419
+ return onWindowReady ( bridge , CONFIG . BRIDGE_TIMEOUT , `Bridge ${ url } ` ) ;
420
+
421
+ } ) . then ( ( ) => {
422
+
423
+ return bridge ;
424
+ } ) ;
412
425
} ) ;
413
426
} ) ;
414
427
} ) ;
0 commit comments