mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
JSXTransformer respects async attribute
Conflicts: vendor/browser-transforms.js
This commit is contained in:
Vendored
+32
-17
@@ -198,7 +198,7 @@ function run(code, url, options) {
|
||||
* @param {function} callback Function to call with the content of url
|
||||
* @internal
|
||||
*/
|
||||
function load(url, callback) {
|
||||
function load(url, successCallback, errorCallback) {
|
||||
var xhr;
|
||||
xhr = window.ActiveXObject ? new window.ActiveXObject('Microsoft.XMLHTTP')
|
||||
: new XMLHttpRequest();
|
||||
@@ -212,8 +212,9 @@ function load(url, callback) {
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState === 4) {
|
||||
if (xhr.status === 0 || xhr.status === 200) {
|
||||
callback(xhr.responseText, url);
|
||||
successCallback(xhr.responseText);
|
||||
} else {
|
||||
errorCallback();
|
||||
throw new Error("Could not load " + url);
|
||||
}
|
||||
}
|
||||
@@ -230,10 +231,8 @@ function load(url, callback) {
|
||||
* @internal
|
||||
*/
|
||||
function loadScripts(scripts) {
|
||||
var result = scripts.map(function() {
|
||||
return false;
|
||||
});
|
||||
var count = result.length;
|
||||
var result = [];
|
||||
var count = scripts.length;
|
||||
|
||||
function check() {
|
||||
var script, i;
|
||||
@@ -241,10 +240,10 @@ function loadScripts(scripts) {
|
||||
for (i = 0; i < count; i++) {
|
||||
script = result[i];
|
||||
|
||||
if (script && !script.executed) {
|
||||
run(script.content, script.url, script.options);
|
||||
if (script.loaded && !script.executed) {
|
||||
script.executed = true;
|
||||
} else if (!script) {
|
||||
run(script.content, script.url, script.options);
|
||||
} else if (!script.loaded && !script.error && !script.async) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -258,26 +257,42 @@ function loadScripts(scripts) {
|
||||
};
|
||||
}
|
||||
|
||||
// script.async is always true for non-javascript script tags
|
||||
var async = script.hasAttribute('async');
|
||||
|
||||
if (script.src) {
|
||||
load(script.src, function(content, url) {
|
||||
result[i] = {
|
||||
executed: false,
|
||||
content: content,
|
||||
url: url,
|
||||
options: options
|
||||
};
|
||||
result[i] = {
|
||||
async: async,
|
||||
error: false,
|
||||
executed: false,
|
||||
content: null,
|
||||
loaded: false,
|
||||
url: script.src,
|
||||
options: options
|
||||
};
|
||||
|
||||
load(script.src, function(content) {
|
||||
result[i].loaded = true;
|
||||
result[i].content = content;
|
||||
check();
|
||||
}, function() {
|
||||
result[i].error = true;
|
||||
check();
|
||||
});
|
||||
} else {
|
||||
result[i] = {
|
||||
async: async,
|
||||
error: false,
|
||||
executed: false,
|
||||
content: script.innerHTML,
|
||||
loaded: true,
|
||||
url: null,
|
||||
options: options
|
||||
};
|
||||
check();
|
||||
}
|
||||
});
|
||||
|
||||
check();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user