Die Dojo-Erstellung schlägt im IE9 fehl, wenn die Ebene aus dem HTML-Header geladen wird: Die Eigenschaft 'dir' ist undefiniert

Ich habe einen Dojo-Build erstellt, aber ich wollte die Flexibilität beim Aktivieren / Deaktivieren des Builds, also habe ich versucht, in zu laden<script> Tags im HTML-Header:

<script src="js/config.js"></script>
<script src="/dojo/1.9/dojo/dojo.js" data-dojo-config="async: true"></script>
<script src="/dojo/1.9/dojo/dojo-all.js"></script>

und ich habe meine JS-Datei unverändert gelassen. Es scheint jedoch zu funktionieren, es gab ein Problem, aber nur in IE9 und nur in der auf WebSphere bereitgestellten Anwendungsversion (ich habe es auf Apache2 getestet). Das Problem war, dass die Eigenschaft 'dir' in diesem bestimmten Codefragment undefiniert war:

    geom.isBodyLtr = function isBodyLtr(doc) {
        doc = doc || win.doc;
        return (win.body(doc).dir || doc.documentElement.dir 
           || "ltr").toLowerCase() == "ltr";
    };

Nach einigem Suchen nach ähnlichen Problemen (z. B .:So verhindern Sie den Fehler "Wert der Eigenschaft 'dir' kann nicht abgerufen werden: Objekt ist null oder undefiniert" beim Laden von Seiten in IE9), Ich habe festgestellt, dass es ein Problem mit der Ladesequenz sein kann. Ich habe die Ebene aus dem HTML-Header entfernt und in der folgenden Reihenfolge in mein JS geladen:

require(["dojo/domReady!"], function(){
// load the layers, but only after document is ready
require(['dojo/dojo-all'], function(){

require(["dojo", "dojo/on", "dojo/dom-attr", "dojo/dom-class", (... and hundred more) 

Ich weiß jedoch, dass Leute Builds in HTML-Header laden, zum Beispiel vom Thema hier:Dojo-Builds ...? Was jetzt?

Meine Frage ist also, mache ich etwas falsch oder funktioniert dieser Trick mit HTML-Header nicht garantiert in allen Browsern?

Dies ist meine Build-Skript-Konfiguration:

'dojo/dojo': {         
    include: ['dojo/dojo', 'dojo/domReady', 'dojo/_base/declare'],         
    boot: true,         
    customBase: true    
},
'dojo/dojo-all': {
    include: ["dojo/on", "dojo/dom-attr", "dojo/dom-class", "dojo/query", "dojo/_base/lang", "dojo/request/xhr", 
    "dijit/registry","dijit/form/TextBox", "dijit/form/Textarea", "dijit/form/ComboBox", "dijit/form/FilteringSelect", "dijit/form/CheckBox", "dijit/form/Button",
    "gridx/core/model/cache/Sync", "gridx/Grid", "gridx/modules/SingleSort", "gridx/modules/ColumnResizer", 
    (...and hundred more)],
    boot: false, // exclude bootstrap modules
    customBase: false
},

und das ist die build.bat von dojo:

java -Xms256m -Xmx256m  -cp "%~dp0../shrinksafe/js.jar";"%
~dp0../closureCompiler/compiler.jar";"%~dp0../shrinksafe/shrinksafe.jar" 
org.mozilla.javascript.tools.shell.Main  "%~dp0../../dojo/dojo.js" 
baseUrl="%~dp0../../dojo" load=build %*

Antworten auf die Frage(1)

Ihre Antwort auf die Frage