2012-08-09 22 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