2012-08-09 62 views
4

我正在使用requires.js 2.0。我有以下簡單的用例:在Firefox中使用require.js加載文本文件失敗:「AccessControlException」

我的HTML文件:

<!DOCTYPE HTML> 
<html> 
<head> 
    <title></title> 
    <script type="text/javascript" data-main="apptest.js" src="../_js/libs/require/require.js"></script> 
</head> 
<body> 

</body> 
</html> 

然後在apptest.js:

requirejs.config({ 
    paths: { 
     'text': '../_js/libs/require/text' 
    } 
}); 

requirejs(
    ['text!boxes.html'], 

    function (Boxes) { 
     alert("done"); 
    } 
); 

好了,所以它並沒有真正做太多,但足以來表達我的觀點。僅在Firefox(14.0.1)中,我得到一個異常「未捕獲的異常:java.security.AccessControlException:訪問被拒絕(java.io.FilePermission。\ boxes.html讀取)」。

所以,require.js成功地加載了文本插件,但是無法加載我的html文件,我以後想用它作爲模板。在谷歌瀏覽器甚至IE9中,它都可以正常工作。我在Windows 7上。

我在本地網絡服務器上運行此操作,因此沒有文件:// ...請求。

我檢查過了,如果我在html文件上設置了任何特殊的權限,但還沒有發現任何可疑內容。

任何人有想法嗎?

更新:在Firefox 13.0.1中運行測試對我而言確實沒有任何錯誤。那麼可能呢,這是一個在firefox 14中引入的錯誤?

回答

1

我在一分鐘前遇到了同樣的問題。

Packages = undefined; 

這應該做的:我已經做在main.js文件中的以下(你設置的配置)

之前

require.config({..... 

添加以下代碼固定它訣竅。

你應該有這樣的事情:

Packages = undefined; 

require.config({ 
    baseUrl: theAppBaseUrl, 
    paths: { 

基本上解釋是,它試圖用Java獲得文件,而不是一個Ajax請求(無論何種原因)。這迫使它使用XHR對象來獲取它。

乾杯!

+0

謝謝,這有效,所以我把它標記爲答案。同時,我還從github上的require團隊獲得了答案。這似乎是文本插件中的一個問題。將插件切換回2.0.1版本也解決了這個問題:https://github.com/requirejs/text/issues/13 – ghost23 2012-08-10 08:41:29

+0

是的 - 我認爲這是一個錯誤。所以2.0.1的作品。很高興知道。謝謝! – 2012-08-10 11:55:17

+0

@AndreiGabreanu,謝謝! – Sergey 2012-08-28 05:48:13