2015-05-22 44 views
3

由於我在dojotoolkit上試圖用手,我嘗試在瀏覽器中運行(打開)下面的html代碼,就像他們在教程中所說的,但我的瀏覽器無法加載dojo .js文件無法加載dojo.js

在排除故障時我發現,源地址轉換類似以下內容:

文件://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 ...」'更改爲'src =「http://ajax.googleapis ...' – frank

+0

感謝您的建議Frank現在的工作... – p27

回答

3

使用真正的網絡服務器,而不是從文件系統瀏覽。

雖然弗蘭克是正確的,因爲在URL中添加一個顯式協議將解決這個特定問題,無論如何您將不可避免地遇到其他問題,例如XHR被鎖定在file://協議中。如果您在提供http或https的真實網絡服務器上進行測試,那麼您最初使用的協議相關URL將會正常工作。

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。很好,但如果在這種情況下使用了'file://',那就是* real *問題,即使這個問題得到解決也會引發其他問題。 –

+0

就像@KenFranqueiro所說的,腳本通常放在頁面,甚至圖書館。AFAIK有cer這些瀏覽器僅限於同時從同一主機下載2個資源的限制。在此處閱讀更多信息:https://developer.yahoo.com/performance/rules.html#js_bottom – g00glen00b