2008-09-18 128 views
4

我使用以下html從谷歌的託管加載dojo。谷歌託管dojox.gfx

<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"); 
... 

在doqox.gfx這樣的錯誤提示行上出現這個錯誤是未定義的。有沒有辦法做到這一點,或谷歌不支持dojox擴展?

或者,我還可以使用另一個常見的主機用於標準dojo發行版嗎?

回答

4

以不同的方式確保你不脫落犯規從當您引用的.js直接從<腳本>標記文件(注意,谷歌JS API也支持這一點,看到here) ,google.load不同步。這意味着當你的代碼到達google.load時,它不會等待dojo被完全加載以保持解析;它會直接進入你的dojo.require行,並且會失敗,因爲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"); 
    ... 
} 
0

我相信google會成爲您導入庫的命名空間。試試:google.dojo.require

哦!正如下面指出的,不要忘記使用google.setOnLoadCallback,而不是直接調用你的函數。

+0

google.dojo未定義 – 2008-09-18 05:02:58

0

一個更好的問題是 - 爲什麼你想要?如果您正在開發本地主機,那麼只需使用相對路徑(如果您正在面向服務器的互聯網上開發) - 將dojo文件粘貼到該主機上。

而且 - 做的same origin policy

+0

使用外部版本可以更輕鬆地與其他用戶共享單個文件原型。此外,Google向我出售了他們的http://code.google.com/apis/ajaxlibs/documentation – 2008-09-18 05:09:10

0

DojoX中實際上是沒有維護,並且將被從道場-2取出。 dojox中的大多數小部件都存在主要問題,只有少數很好。

恕我直言,dojo應該是自主託管的,因爲總會有東西需要覆蓋 - 例如,您需要在此dojox.gfx中進行一些修復。