2013-02-12 49 views
1

我需要从iframe(同一来源)替换顶部文档的全部内容。在iframe执行JavaScript后执行以下任务:从iframe替换顶部文档而不更改当前URL

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

但是,在Firefox中,操作会将当前文档的URL更改为iframe的URL。在Chrome中,URL不会更改。是否有可能从iframe中替换文档,但保持其原始URL的方式适用于所有合理的浏览器? (我尝试删除“替换”参数,但它没有帮助)。

回答

1

如果您有更换全部内容(包括头部分等),你可以尝试:

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); 

在这种情况下,网址会和以前一样。如果你没有需要改变完整的文件,只是内容,你可以使用:

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

这将使顶部文件不变的头,但将替换所有内容,而无需更改URL。

+0

我需要替换整个文档,而不仅仅是正文。第一种方法的确在Firefox和Chrome中都能胜任。你知道是否将JavaScript直接放入网址或将其用作最后的手段是一种常见做法吗?我不知道它是否会导致一些意想不到的问题。 – 2013-02-12 13:34:19

+0

@JanWrobel我会认为它是最后的手段。 – 2013-02-12 13:36:58

+0

好的,我认为,我会改变我的方法并重定向到一个不同的URL而不是替换当前文档。感谢帮助! – 2013-02-13 10:32:19