Mise à jour de la balise <base> du document pour que les liens relatifs fonctionnent...
authorBenoît Pin <pin@cri.ensmp.fr>
Fri, 11 Apr 2014 09:49:03 +0000 (11:49 +0200)
committerBenoît Pin <pin@cri.ensmp.fr>
Fri, 11 Apr 2014 09:49:03 +0000 (11:49 +0200)
skins/ajax_scripts/fragment_importer.js

index 6839a16..6caaaa2 100644 (file)
@@ -75,17 +75,26 @@ FragmentImporter.prototype.populateBaseElement = function(req) {
        }
        if (contentType.indexOf('text/xml') !== -1) {
                var fragments = req.responseXML.documentElement.childNodes;
        }
        if (contentType.indexOf('text/xml') !== -1) {
                var fragments = req.responseXML.documentElement.childNodes;
-               var fragment, dest, scripts, i, j;
+               var element, dest, scripts, i, j;
                for (i=0 ; i < fragments.length ; i++) {
                for (i=0 ; i < fragments.length ; i++) {
-                       fragment = fragments[i];
-                       if (fragment.nodeName === 'fragment') {
-                               dest = document.getElementById(fragment.getAttribute('id'));
-                               if(dest) {
-                                       dest.innerHTML = fragment.firstChild.nodeValue;
-                                       scripts = dest.getElementsByTagName('script');
-                                       for (j=0 ; j < scripts.length ; j++) {
-                                               globalScriptRegistry.loadScript(scripts[j]); }
-                               }
+                       element = fragments[i];
+                       switch (element.nodeName) {
+                               case 'fragment' :
+                                       dest = document.getElementById(element.getAttribute('id'));
+                                       if(dest) {
+                                               dest.innerHTML = element.firstChild.nodeValue;
+                                               scripts = dest.getElementsByTagName('script');
+                                               for (j=0 ; j < scripts.length ; j++) {
+                                                       globalScriptRegistry.loadScript(scripts[j]); }
+                                       }
+                                       break;
+                               case 'base' :
+                                       var headBase = document.getElementsByTagName('base');
+                                       if (headBase.length) {
+                                               headBase[0].setAttribute('href', element.getAttribute('href'));
+                                               console.info('set base href:', headBase[0].href);
+                                       }
+                                       break;
                        }
                }
        }
                        }
                }
        }