Javascript 在不更改当前URL的情况下替换iframe中的顶级文档

Javascript 在不更改当前URL的情况下替换iframe中的顶级文档,javascript,dom,Javascript,Dom,我需要替换来自iframe(相同来源)的顶部文档的全部内容。以下由iframe执行的JavaScript执行此任务: var doc = window.top.document.open("text/html", "replace"); doc.write('hello'); doc.close(); 但是,在Firefox中,该操作将当前文档的URL更改为iframe的URL。在Chrome中,URL不会更改。是否可以替换iframe中的文档,但保留其原始URL,使其在所有合理的浏览器中都能

我需要替换来自iframe(相同来源)的顶部文档的全部内容。以下由iframe执行的JavaScript执行此任务:

var doc = window.top.document.open("text/html", "replace");
doc.write('hello');
doc.close();

但是,在Firefox中,该操作将当前文档的URL更改为iframe的URL。在Chrome中,URL不会更改。是否可以替换iframe中的文档,但保留其原始URL,使其在所有合理的浏览器中都能正常工作?(我尝试删除“replace”参数,但没有帮助)。

如果您必须替换完整的内容(包括标题部分等),您可以尝试:

var html = 'YOUR HTML' /* your html string*/,
    url = "javascript:(function(){var c = '" +html +
           "';document.open();document.write(c);document.close();})();";
// replacing the original location with the dynamically generated one 
window.top.location.replace(url);
在这种情况下,url将与以前相同。如果不需要更改完整文件,只需更改内容,可以使用:

window.top.document.documentElement.innerHTML = 'YOUR HTML';

这将使顶部文档的标题保持不变,但将在不更改url的情况下替换所有内容。

我需要替换整个文档,而不仅仅是正文。第一种方法确实在Firefox和Chrome中都起到了作用。你知道将JavaScript直接放在url中是一种常见的做法,还是作为最后的手段?我想知道它是否会引起一些意想不到的问题。@JanWrobel我认为这是最后的办法。好的,我想,我会改变我的方法,重定向到另一个URL,而不是替换当前文档。谢谢你的帮助!