Я использую dojo.gfx для создания векторных фигур и текста на моем веб-сайте, и все работает нормально, когда я "dojo.require" - все зависимости в моем Javascript. Но когда я собираю все, что мне нужно, в пользовательской сборке (особенно dojox.gfx , dojox.gfx.svg и dojox.gfx.vml ), Автоматическое дифференцирование Dojo для браузеров, поддерживающих SVG, и IE (VML), похоже, не работает.
Если я включаю только dojox.gfx.svg, IE ломается (см. Ниже), если я добавляю dojox.gfx.vml, мои скрипты перестают работать в Firefox.
В IE скрипты разбиваются на следующую строку моей пользовательской сборки dojo, говорящую «Объект не поддерживает свойство или метод»:
*s.rawNode = _createElementNS(svg.xmlns.svg, "svg");*
с комментарием _createElementNS к "Внутреннему помощнику для создания элементов с пространством имен. Главным образом, чтобы заставить вывод SVG-разметки работать в IE.".
Правильно, я исключаю SVG и VML из своего профиля сборки dojo и позволяю dojo xhrGet остальным. Это работает, но требует еще три запроса (svg.js, shape.js, path.js, хотя последние два включены в мою сборку).
Что мне нужно включить в мою сборку, чтобы векторные фигуры работали во всех браузерах "из коробки"?
Это мой профиль сборки, который работает, но требует дополнительных трех запросов (так что ни svg, ни vml явно не включены):
dependencies ={
layers: [
{
name: "mybuild-dojo.js",
dependencies: [
"dojo.fx",
"dojox.gfx",
"dojox.gfx.shape",
"dojox.gfx.path",
"dojox.gfx.VectorText",
"dojox.xml.DomParser",
"dojox.image.Lightbox",
"dojo.parser"
]
}
],
prefixes: [
[ "dijit", "../dijit" ],
[ "dojox", "../dojox" ],
]
}; * * тысячу двадцать-пять
Спасибо за ваш ответ.