diff --git a/src/fonts.js b/src/fonts.js index 3cdd8a578..f29239a4b 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -629,7 +629,9 @@ var FontLoader = { } request.complete(); // cleanup - document.body.removeChild(frame); + if (frame) { + document.body.removeChild(frame); + } window.removeEventListener('message', fontLoaderMessage, false); }, false); @@ -654,6 +656,17 @@ var FontLoader = { src += '

Hi

'; } src += ''; + + var MAX_IFRAME_SRC_LENGTH = 1000000, IFRAME_TIMEOUT = 2000; + // Chrome fails for long src attributes (see issue 174023) + if (src.length > MAX_IFRAME_SRC_LENGTH) { + // ... waiting for some fixed period of time instead + window.setTimeout(function() { + window.postMessage(requestId, '*'); + }, IFRAME_TIMEOUT); + return; + } + var frame = document.createElement('iframe'); frame.src = 'data:text/html,' + src; frame.setAttribute('style',