summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY1
-rw-r--r--framework/Web/Javascripts/source/prado/activecontrols/ajax3.js27
2 files changed, 21 insertions, 7 deletions
diff --git a/HISTORY b/HISTORY
index 1dfea8a7..8287b39d 100644
--- a/HISTORY
+++ b/HISTORY
@@ -82,6 +82,7 @@ BUG: Issue #402 - Component property 'TDatePickerClientScript.setOnLoading' is n
BUG: Issue #404 - THtmlArea sometimes not loading properly from callbacks (gabor)
BUG: Issue #406 - Prado does not allow extension of the application configuration (gabor)
BUG: Issue #407 - Prado does not allow custom SqlMap data caching strategy/method & has inefficient Basic cache (gabor)
+BUG: Issue #408 - Missing script/stylesheet file(s) halt(s) callback processing (gabor)
Version 3.1.10 Jul 17, 2011
BUG: Added missing timeout on TCacheHttpSession (ctrlaltca)
diff --git a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js
index 11eec5a4..995e8e97 100644
--- a/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js
+++ b/framework/Web/Javascripts/source/prado/activecontrols/ajax3.js
@@ -1014,11 +1014,22 @@ if (typeof(Prado.AssetManagerClass)=="undefined") {
this.loadedAssets.push(url);
},
- createAssetReadyStateChangeFunction: function(url, element, callback, finalevent) {
- return function() {
- if (finalevent || (element.readyState == 'loaded') || (element.readyState == 'complete'))
- callback(url,element);
- };
+ assetReadyStateChanged: function(url, element, callback, finalevent) {
+ if (finalevent || (element.readyState == 'loaded') || (element.readyState == 'complete'))
+ if (!element.assetCallbackFired)
+ {
+ element.assetCallbackFired = true;
+ callback(url,element);
+ }
+ },
+
+ assetLoadFailed: function(url, element, callback) {
+ debugger;
+ element.assetCallbackFired = true;
+ if(typeof Logger != "undefined")
+ Logger.error("Failed to load asset: "+url, this);
+ if (!element.assetCallbackFired)
+ callback(url,element,false);
},
/**
@@ -1035,8 +1046,10 @@ if (typeof(Prado.AssetManagerClass)=="undefined") {
if (callback)
{
- asset.onreadystatechange = this.createAssetReadyStateChangeFunction(url, asset, callback, false);
- asset.onload = this.createAssetReadyStateChangeFunction(url, asset, callback, true);
+ asset.onreadystatechange = this.assetReadyStateChanged.bind(this, url, asset, callback, false);
+ asset.onload = this.assetReadyStateChanged.bind(this, url, asset, callback, true);
+ asset.onerror = this.assetLoadFailed.bind(this, url, asset, callback);
+ asset.assetCallbackFired = false;
}
var head = document.getElementsByTagName('head')[0];