Вопрос

Я использую следующий 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 undefine.Есть ли способ заставить это работать, или Google не поддерживает расширения dojox?

Альтернативно, есть ли другой общий хост, который я могу использовать для стандартных выпусков Dojo?

Это было полезно?

Решение

В отличие от случаев, когда вы ссылаетесь на файлы .js непосредственно из тега <script> (обратите внимание, что API Google js также поддерживает это, см. здесь), 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");
    ...
}

Другие советы

Лучший вопрос: зачем вам это нужно?Если вы разрабатываете на своем локальном хосте, просто используйте относительный путь, если вы разрабатываете на сервере с выходом в Интернет - прикрепите к нему файлы dojo.

Кроме того, убедитесь, что вы не нарушаете та же политика происхождения

Я считаю, что Google станет пространством имен для ваших импортированных библиотек.Пытаться: google.dojo.require.

Ой!И, как указано ниже, не забудьте использовать google.setOnLoadCallback вместо прямого вызова функции.

dojox практически не поддерживается и будет удален из dojo-2.С большинством виджетов в dojox есть серьезные проблемы, хороших лишь несколько.

ИМХО, додзё должно быть самостоятельным, потому что всегда есть вещи, которые вам нужно перезаписать - например, вам нужно внести некоторые исправления в этот dojox.gfx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top