-
Notifications
You must be signed in to change notification settings - Fork 27.5k
Commit
script.onload
for J…
…SONP IE8, IE9 and IE10 can use `script.onreadystate` so up till now we have been using this if the sniffer says we are on IE. But IE11 now does not support `script.onreadystate` and only supports the more standard `script.onload` and `script.onerror`. IE9 and IE10 do support `script.onload` and `script.onerror`. So now we only test whether we are on IE8 or earlier before using `script.onreadystate`. See http://pieisgood.org/test/script-link-events/ jQuery just uses all these handlers at once and hopes for the best, but since IE9 and IE10 support both sets of handlers, this could cause the handlers to be run more than once. jQuery also notes that there is a potential memory leak in IE unless we remove the handlers from the script object once they are run. So we are doing this too, now. Closes #4523 Closes #4527 Closes #4922
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -136,19 +136,24 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument, | |
// - adds and immediately removes script elements from the document | ||
var script = rawDocument.createElement('script'), | ||
doneWrapper = function() { | ||
script.onreadystatechange = script.onload = script.onerror = null; | ||
rawDocument.body.removeChild(script); | ||
if (done) done(); | ||
}; | ||
|
||
script.type = 'text/javascript'; | ||
script.src = url; | ||
|
||
if (msie) { | ||
if (msie && msie <= 8) { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
petebacondarwin
Author
Contributor
|
||
script.onreadystatechange = function() { | ||
if (/loaded|complete/.test(script.readyState)) doneWrapper(); | ||
if (/loaded|complete/.test(script.readyState)) { | ||
doneWrapper(); | ||
} | ||
}; | ||
} else { | ||
script.onload = script.onerror = doneWrapper; | ||
script.onload = script.onerror = function() { | ||
doneWrapper(); | ||
}; | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
petebacondarwin
Author
Contributor
|
||
} | ||
|
||
rawDocument.body.appendChild(script); | ||
|
it should be enough to just check if msie <= 8