dojo 的 "Could not load cross-domain resources:..." 錯誤與解決方法

阿舍遇到這個錯誤的情形,是在阿舍使用了遠端的 dojo.xd.js 檔案,例如 Google 或 AOL 的 CDN 所提供的 dojo.xd.js 檔,然後又用 dojo.require() 來載入其它模組時,就會發生這個錯誤,會造成這個錯誤的原因是因為用 dojo.require() 載入模組時,Dojo 預設會在參考 dojo.js 或 dojo.dojoxd.js 所引用的路徑來尋找所需的模組,但是,因為是引用遠端的檔案,所以,會造成檔案路徑判斷錯誤而找不到所需的模組檔案。

要解決這個問題的方法不難,只要在引用遠端的 dojo.xd.js 檔案之前,先用 djconfig 把路徑設成 ./ 就可以了,範例如下:

<head>

<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dijit/themes/tundra/tundra.css">

<script type="text/javascript">

djConfig = {
    parseOnLoad: true,
    baseUrl: "./",
};

</script>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js" djConfig="parseOnLoad: true">

</script>

<script type="text/javascript">

dojo.require("dijit.Menu");

</script>

</head>
分享:

沒有留言 :