Я использую следующий HTML-код для загрузки додзё с хостинга Google.
<script src = "http://www.google.com/jsapi"></script>
<script type = "text/javascript">google.load("dojo", "1.1.1");</script>
<script type = "text/javascript">
dojo.require("dojox.gfx");
...
Эта ошибка находится в строке requre с ошибкой, такой как dojox.gfx is undefined. Есть ли способ заставить это работать, или Google не поддерживает расширения dojox?
В качестве альтернативы, есть ли еще один общий хост, который я могу использовать для стандартных выпусков додзё?





Я считаю, что Google становится пространством имен для ваших импортированных библиотек. Попробуйте: google.dojo.require.
Ой! И, как указано ниже, не забудьте использовать google.setOnLoadCallback вместо прямого вызова функции.
Лучше спросить: а зачем вам это нужно? Если вы разрабатываете на своем локальном хосте, просто используйте относительный путь, если вы разрабатываете на сервере с выходом в Интернет - прикрепите к нему файлы dojo.
Также - убедитесь, что вы не нарушаете правила та же политика происхождения.
В отличие от того, когда вы ссылаетесь на файлы .js непосредственно из тега <script> (обратите внимание, что google js api также поддерживает это, см. здесь), google.load не является синхронным. Это означает, что когда ваш код достигнет google.load, он не будет ждать полной загрузки dojo, чтобы продолжить синтаксический анализ; он перейдет прямо к вашей строке dojo.require и там не будет работать, потому что объект додзё будет неопределенным.
Решение (если вы не хотите использовать прямой тег <script>) состоит в том, чтобы заключить весь ваш код, который ссылается на dojo, в функцию Начните и установить его как обратный вызов, выполнив:
google.load("dojo", "1.1.1", {callback: start});
function start() {
dojo.require("dojox.gfx");
...
}
или же
google.setOnLoadCallback(start);
google.load("dojo", "1.1.1");
function start() {
dojo.require("dojox.gfx");
...
}
dojox практически не поддерживается и будет удален из dojo-2. С большинством виджетов в dojox есть серьезные проблемы, но хороших только несколько.
ИМХО додзё должно быть самостоятельным, потому что всегда есть вещи, которые нужно перезаписать - например, вам нужно какое-то исправление в этом dojox.gfx.
Использование внешней версии на данный момент упрощает обмен прототипами отдельных файлов с другими пользователями. К тому же Google продал мне свой code.google.com/apis/ajaxlibs/documentation