Kompilacja Dojo kończy się niepowodzeniem na IE9 podczas ładowania warstwy z nagłówka HTML: właściwość „dir” jest niezdefiniowana
Zrobiłem kompilację dojo, ale chciałem elastyczności podczas włączania / wyłączania kompilacji, więc próbowałem wczytać<script>
tagi w nagłówku HTML:
<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>
i zostawiłem mój plik JS niezmodyfikowany. Wydaje się jednak działać, ale wystąpił problem, ale tylko na IE9, i tylko na wersji aplikacji wdrożonej na WebSphere (testowałem na Apache2). Problem polegał na tym, że właściwość „dir” była niezdefiniowana, w tym konkretnym fragmencie kodu:
geom.isBodyLtr = function isBodyLtr(doc) {
doc = doc || win.doc;
return (win.body(doc).dir || doc.documentElement.dir
|| "ltr").toLowerCase() == "ltr";
};
Po kilku poszukiwaniach podobnych problemów (takich jak:Jak zapobiec „Nie można uzyskać wartości właściwości„ dir ”: obiekt jest zerowy lub niezdefiniowany” Błąd podczas ładowania stron w IE9) Wykryłem, że może to być jakiś problem z ładowaniem sekwencji. Usunąłem warstwę z nagłówka HTML i załadowałem ją do mojego JS w następującej kolejności:
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)
Wiem jednak, że ludzie ładują kompilacje w nagłówku HTML, na przykład z tematu tutaj:Dojo Builds ...? Co teraz?
Więc moje pytanie brzmi: czy robię coś złego lub czy nie ma gwarancji, że sztuczka z nagłówkiem HTML zadziała na wszystkich przeglądarkach?
To jest moja konfiguracja skryptu:
'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
},
a to jest build.bat z 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 %*