Skip to content

Commit

Permalink
fix duplicate onload callback of importHref
Browse files Browse the repository at this point in the history
  • Loading branch information
gronke committed Oct 30, 2016
1 parent 098ae54 commit fe43d65
Showing 1 changed file with 31 additions and 24 deletions.
55 changes: 31 additions & 24 deletions src/standard/utils.html
Original file line number Diff line number Diff line change
Expand Up @@ -375,36 +375,43 @@
var cached = list[link.href];
var imprt = cached || link;
var self = this;
if (onload || !cached) {
var loadListener = function(e) {
e.target.__firedLoad = true;
e.target.removeEventListener('load', loadListener);
if (onload) {
return onload.call(self, e);
}
};
imprt.addEventListener('load', loadListener);
}
if (onerror || !cached) {
var errorListener = function(e) {
e.target.__firedError = true;
e.target.removeEventListener('error', errorListener);
if (onerror) {
return onerror.call(self, e);
}
};
imprt.addEventListener('error', errorListener);
}

// if already loaded/erroed, fire 'fake' load/error event
if (cached) {
if (cached.__firedLoad) {
cached.dispatchEvent(new Event('load'));
if(onload) {
onload();
}
return imprt;
}
if (cached.__firedError) {
cached.dispatchEvent(new Event('error'));
if(onerror) {
onerror();
}
return imprt;
}
// otherwise put in dom!
} else {
}

// when not already cached and complete, wait for load event
var loadListener = function(e) {
e.target.__firedLoad = true;
e.target.removeEventListener('load', loadListener);
if (onload) {
return onload.call(self, e);
}
};
imprt.addEventListener('load', loadListener);

var errorListener = function(e) {
e.target.__firedError = true;
e.target.removeEventListener('error', errorListener);
if (onerror) {
return onerror.call(self, e);
}
};
imprt.addEventListener('error', errorListener);

if (!cached) {
list[link.href] = link;
optAsync = Boolean(optAsync);
if (optAsync) {
Expand Down

0 comments on commit fe43d65

Please sign in to comment.