FireFox中HTML/iframe错误-组件返回失败代码:0x80004005 (NS_ERROR_FAILURE)

Error with HTML/iframe in FireFox - Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHistory.pushState]

本文关键字:0x80004005 NS 代码 FAILURE ERROR 失败 HTML iframe 错误 返回 组件      更新时间:2023-09-26

我正在创建一个基于java (JSF)服务器的小型javascript模拟。bootstrap javascript文件将下载并使用AJAX解析一堆文件,然后生成一个大的HTML字符串。这个HTML字符串是一个完整的HTML文档——它有doctype, head, script includes, inline scripts, body等。

我不想使用真正的JSF后端是因为我希望能够有一个纯粹的UI环境来测试我的代码,而没有任何java/oracle服务器减慢我的速度。

我想与任何人分享我的代码(例如,在.zip文件中),他们应该能够在任何浏览器中打开页面(在AJAX调用时有一个小加载屏幕),而没有在他们的机器上安装一些服务器。

这个问题的答案促使我进行了更多的探索——现在我遇到了一个不同的错误,但我似乎无法解释它。

第一个错误:这个错误试图使用iframe的document.write将HTML放入iframe中。在这个HTML中有一个脚本推送一个新的历史状态history.pushState(null, null, hash)

第二种方法:这个方法试图将HTML放入iframe中,但这次它只使用location.hash = hash

这两个fiddles似乎在Chrome和Safari和ie9中工作良好-但Firefox给出以下错误:

NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHistory.pushState]

我不明白这个错误-如果你在firefox的任何页面上使用FireBug中的javascript控制台做同样的代码history.pushState(null,null,"#test"),它工作得很好-但在这种特殊情况下它不工作。

我还尝试在当前页面的文档上执行document.open(); document.write(html); document.close()(而不是创建iframe),但同样的问题发生了-只有这一次,如果我把断点在firebug插入到HTML片段中插入的javascript代码,断点不工作,这将意味着我不能再调试firefox中的任何东西。至少在iframe方法中,断点可以工作。

谁能解释一下这个问题?

这是我昨天问的另一个相关问题,导致发现这个错误:Firefox失败-使用文档后。写入和更新位置。哈希导致页面刷新

你可以把这段代码

history.pushState(null,null,"#test") 

之前
document.open(); 
document.write(html); 
document.close(); 

我在尝试使用历史打开Ember应用程序时遇到了类似的问题。pushState(烬路由器location: 'history'路由方法)在iframe内。似乎这个问题只发生在Firefox中进行硬刷新(Mac上的cmd + shift + r或Windows上的ctrl + f5)时。这个问题只发生在我的FireFox中,在Chrome和Safari中工作良好,具有类似的硬刷新。

当我第一次导航到页面或正常刷新页面(cmd + r Mac, f5 Windows)时,这个问题不会发生。我发现了许多看似与Mozilla的Bugzilla相关的东西,但很多都很接近。这个问题似乎代表了我遇到的同样的问题,并且在当前版本的Firefox(撰写本文时为v37.0.1)中仍然存在。

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