diff --git a/lib/web/JsonpMainTemplatePlugin.js b/lib/web/JsonpMainTemplatePlugin.js index ad069d5313b..2a842025b2a 100644 --- a/lib/web/JsonpMainTemplatePlugin.js +++ b/lib/web/JsonpMainTemplatePlugin.js @@ -154,6 +154,7 @@ class JsonpMainTemplatePlugin { return Template.asString([ "var script = document.createElement('script');", + "var onScriptComplete;", jsonpScriptType ? `script.type = ${JSON.stringify(jsonpScriptType)};` : "", @@ -168,12 +169,7 @@ class JsonpMainTemplatePlugin { ), "}", "script.src = jsonpScriptSrc(chunkId);", - "var timeout = setTimeout(function(){", - Template.indent([ - "onScriptComplete({ type: 'timeout', target: script });" - ]), - `}, ${chunkLoadTimeout});`, - "function onScriptComplete(event) {", + "onScriptComplete = function (event) {", Template.indent([ "// avoid mem leaks in IE.", "script.onerror = script.onload = null;", @@ -196,6 +192,11 @@ class JsonpMainTemplatePlugin { "}" ]), "};", + "var timeout = setTimeout(function(){", + Template.indent([ + "onScriptComplete({ type: 'timeout', target: script });" + ]), + `}, ${chunkLoadTimeout});`, "script.onerror = script.onload = onScriptComplete;" ]); }