2015-05-22 5 views
3

Как я пытаюсь мои руки на dojotoolkit, я пытаюсь запустить (открыть) следующий html-код в своем браузере, как говорится в учебнике, но мой браузер не может загрузить dojo .jsне может загрузить dojo.js

Во время поиска неисправностей я обнаружил, что исходный URL преобразуется как следующее:

файл: //ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo. js

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Tutorial: Hello Dojo!</title> 
</head> 
<body> 
    <h1 id="greeting">Hello</h1> 
    <!-- load Dojo --> 
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js" 
      data-dojo-config="async: true"></script> 

    <script> 
     require([ 
      'dojo/dom', 
      'dojo/dom-construct' 
     ], function (dom, domConstruct) { 
      var greetingNode = dom.byId('greeting'); 
      domConstruct.place('<em> Dojo!</em>', greetingNode); 
     }); 
    </script> 
</body> 
</html> 
+0

Вы пытались изменить 'src =" // ajax.googleapis ... "' to 'src =" http: //ajax.googleapis ... ' – frank

+0

Спасибо за предложение Фрэнк сейчас о его работе ... – p27

ответ

3

Используйте реальный веб-сервер, а не просматривайте его из файловой системы.

В то время как Фрэнк прав, поскольку добавление явного протокола к URL-адресу будет устранять эту конкретную проблему, в любом случае вы неизбежно столкнетесь с другими проблемами, такими как XHR, заблокированный от протокола file://. Относительный URL-адрес протокола, который вы изначально использовали, будет работать нормально, если вы протестируете на реальном веб-сервере, который обслуживает http или https.

1

вам необходимо добавить http в качестве протокола для dojo.js источник файла.

<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js" 
      data-dojo-config="async: true"></script> 

Также лучше практика, чтобы добавить файлы библиотек в голову тег вместо тела тега.

<head> 
    <meta charset="utf-8"> 
    <title>Tutorial: Hello Dojo!</title> 

    <!-- load Dojo --> 
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js" 
      data-dojo-config="async: true"></script> 
</head> 
+0

Скрипты в конце тела - это обычная передовая практика, поскольку старые браузеры особенно ограничивают количество одновременных загрузок сценариев, что может замедлить загрузку других ресурсов (стилей, изображений и т. Д.), Которые в противном случае могли бы быть загружены больше параллельно. Между тем, обычно, 'src =" // ... "' является относительным по протоколу URL-адресом, поэтому он будет загружать 'http', если просматриваемая веб-страница является' http' или 'https', если это' https', которая является отлично, но если в этом случае используется 'файл: //', это проблема * real * и вызовет другие проблемы, даже если это исправлено. –

+0

Как и @KenFranqueiro, скрипты довольно часто помещаются внизу страницы, даже библиотеки. AFAIK есть которые имеют ограничение только на загрузку 2 ресурсов с одного и того же хоста одновременно. Подробнее здесь: https://developer.yahoo.com/performance/rules.html#js_bottom – g00glen00b

Смежные вопросы