mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-03 19:45:44 -05:00
Merge pull request #681 from hackalyze/load-scripts-synchronously
Fix paperscript source from being executed out-of-order
This commit is contained in:
commit
111d5c8f66
2 changed files with 11 additions and 5 deletions
|
@ -450,6 +450,7 @@ Base.exports.PaperScript = (function() {
|
|||
var canvasId = PaperScope.getAttribute(script, 'canvas'),
|
||||
canvas = document.getElementById(canvasId),
|
||||
src = script.src,
|
||||
async = PaperScope.hasAttribute(script, 'asyc'),
|
||||
scopeAttribute = 'data-paper-scope';
|
||||
if (!canvas)
|
||||
throw new Error('Unable to find canvas with id "'
|
||||
|
@ -462,11 +463,15 @@ Base.exports.PaperScript = (function() {
|
|||
// compiling multiple scripts for the same element.
|
||||
canvas.setAttribute(scopeAttribute, scope._id);
|
||||
if (src) {
|
||||
// If we're loading from a source, request that first and then
|
||||
// run later.
|
||||
// If we're loading from a source, request the source
|
||||
// synchronously to guarantee code is executed in the
|
||||
// same order the script tags appear.
|
||||
// If the async attribute is specified on the script element,
|
||||
// request the source asynchronously and execute as soon as
|
||||
// it is retreived.
|
||||
Http.request('get', src, function(code) {
|
||||
execute(code, scope, src);
|
||||
});
|
||||
}, async);
|
||||
} else {
|
||||
// We can simply get the code form the script tag.
|
||||
execute(script.innerHTML, scope, script.baseURI);
|
||||
|
|
|
@ -11,11 +11,12 @@
|
|||
*/
|
||||
|
||||
var Http = {
|
||||
request: function(method, url, callback) {
|
||||
request: function(method, url, callback, async) {
|
||||
// Code borrowed from Coffee Script and extended:
|
||||
async = (async === undefined) ? true : async;
|
||||
var xhr = new (window.ActiveXObject || XMLHttpRequest)(
|
||||
'Microsoft.XMLHTTP');
|
||||
xhr.open(method.toUpperCase(), url, true);
|
||||
xhr.open(method.toUpperCase(), url, async);
|
||||
if ('overrideMimeType' in xhr)
|
||||
xhr.overrideMimeType('text/plain');
|
||||
xhr.onreadystatechange = function() {
|
||||
|
|
Loading…
Reference in a new issue