Author: mgrigorov
Date: Fri Sep 30 07:50:01 2011
New Revision: 1177542

URL: http://svn.apache.org/viewvc?rev=1177542&view=rev
Log:
WICKET-4092 Improve wicket-ajax.js processScript method to not use 
XMLHttpRequest for loading <script src="">
WICKET-3927 Use a resource loading lib to setup order for processing ajax 
response fragments

Call notify() when the new script is loaded.
This way if any later javascript contribution depends on the currently loaded 
one will be able to actually see it.


Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js?rev=1177542&r1=1177541&r2=1177542&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js 
(original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/wicket-ajax.js 
Fri Sep 30 07:50:01 2011
@@ -1673,6 +1673,23 @@ Wicket.Head.Contributor.prototype = {
                                        var attr = attrs[a];
                                        scriptDomNode[attr.name] = attr.value;
                                }
+                               
+                               var onScriptReady = function () {
+                                   notify();
+                               };
+                               
+                               // first check for feature support
+                               if (typeof(scriptDomNode.onload) !== 
'undefined') {
+                                   scriptDomNode.onload = onScriptReady;
+                               } else if 
(typeof(scriptDomNode.onreadystatechange) !== 'undefined') {
+                                   scriptDomNode.onreadystatechange = 
onScriptReady;
+                               } else if (Wicket.Browser.isGecko()) {
+                                   // Firefox doesn't react on check above ...
+                                   scriptDomNode.onload = onScriptReady;
+                               } else {
+                                   // as a final resort after the current 
function execution
+                                   setTimeout(onScriptReady, 0);
+                               }
 
                                Wicket.Head.addElement(scriptDomNode);
                        
@@ -1695,10 +1712,10 @@ Wicket.Head.Contributor.prototype = {
                                                
Wicket.Log.error("Wicket.Head.Contributor.processScript: " + e + ": eval -> " + 
text);
                                        }
                                }
+        
+                               // continue to next step
+                               notify();
                        }
-                       
-                       // continue to next step
-                       notify();
                });                                     
        },
 


Reply via email to