Firefox:iframe中的AngularJS应用程序抛出nsresult:“0x80004005(NS_ERROR_FAILURE)”错误

时间:2015-02-10 17:05:43

标签: javascript angularjs firefox iframe

当我在页面上打开iframe中的angularjs应用程序时,所有浏览器都能正常运行。但是在Firefox中如果我使用ctrl + f5刷新我会从nsresult开始这个非常讨厌的错误:" 0x80004005(NS_ERROR_FAILURE)" location:" JS frame" ...

请看图片:(不确定是否可以实际阅读) error

你可以在firefox中自己测试它,打开链接https://www.ipushpull.com/embed/SCAR/Alpine,你应该看到登录表单,按ctrl + f5你会看到错误。

其他浏览器都很好。

我看到很少有其他讨论,有些人提到这可能是因为CORS请求(我正在使用),我看不太可能,因为其他请求在同一页面上的firefox中正常工作(当你打开taht页面时它会发出请求api返回它应该的东西)

其他提及它与窗口历史有关,这可能是因为一旦你到达该链接并且API返回403,它会将你重定向到angular uri#/ user / login,但我没有找到任何我可以尝试的解决方案与历史有关。

有什么想法吗?非常感谢

更新

我看到你无法打开图片,这里是"完整的":http://i.stack.imgur.com/7SYQ8.jpg

更新2

  1. 这不是由于CORS问题。我在整个站点中使用CORS没有问题,即使在同一页面上有其他CORS请求,它们也可以工作。

  2. 这不是由任何adblock / popupblock插件引起的,我试图彻底清除浏览器。

  3. 使用非缩小角度进行调试 - 实际上我并不认为这对调试很重要(因为我对角度有信心),但是请问是什么。如果我更改为未缩小角度错误不会发生 ..有任何想法吗?

2 个答案:

答案 0 :(得分:1)

我在iframe中尝试使用history.pushState(路由的Ember路由器location: 'history'方法)打开Ember应用时遇到了类似的问题。只有在Mac上进行硬刷新(Mac上为cmd + shift + r或Windows上为ctrl + f5)时,才会出现此问题。这个问题只出现在我的FireFox中,在Chrome和Safari中运行良好,具有类似的硬刷新功能。我还验证了我在使用$ locationProvider html5mode(它也使用了引擎盖下的history.pushState)在FireFox中的iframe中打开一个Angular JS应用程序的问题。

首次导航到页面或正常刷新页面时,我不会遇到此问题(cmd + r Mac,f5 Windows)。我发现很多看似与Bugzilla有关的Mozilla相关,但很多都很接近。这个似乎代表了我所拥有的相同问题,并且在当前版本的Firefox(编写本文时的v37.0.1)中仍然是开放的。

https://bugzilla.mozilla.org/show_bug.cgi?id=1003100

在使用基于散列的路由的iframe中打开Ember或Angular应用程序(或任何技术......)似乎是一个可行的解决方案。我无法使用基于散列的路由方法为这两个框架重现问题。

答案 1 :(得分:0)

如果未声明服务依赖项列表(在数组中)后跟函数本身,则AngularJS中的缩小会导致问题。但是,我查看了你的代码,看起来你已经覆盖了它。我可能会在这里遗漏一些东西,所以为了以防万一,再过一次是个好主意。

另一方面,它可能是假阴性。当我在所有依赖js文件完全加载之前刷新页面时,我在Chrome中也出现了一些错误。由于您有Firebug Persist模式,因此某些请求不会被取消并导致溢出exception,如附加图像中的第3个请求。

因此,对于此错误,如果您关闭手表,它们应该消失。