Javascript 在不更改当前URL的情况下替换iframe中的顶级文档
我需要替换来自iframe(相同来源)的顶部文档的全部内容。以下由iframe执行的JavaScript执行此任务: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,使其在所有合理的浏览器中都能
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,而不是替换当前文档。谢谢你的帮助!