我有一个字符串,如下所示:
<html><head><title>example</title></head><body>some example text</body></html>
我将此字符串作为AJAX请求的结果返回。
我希望浏览器呈现并显示该字符串。我们的想法是这样做:
$('html').parent().html(myString);
那是行不通的。我曾尝试使用IFRAME,但我也没有想出如何让它工作。
注意:我不可能更改这个字符串。我也不可能在随后对服务器的调用中重新生成这个字符串(否则我只能将浏览器重定向到该url)。
发布于 2009-08-06 00:12:11
document.open/write/close方法将执行您想要的操作:
var newDoc = document.open("text/html", "replace");
newDoc.write(myString);
newDoc.close();
除非传入replace参数,否则document.open调用将添加页历史记录。因此,用户必须单击back两次才能返回到上一页。
发布于 2009-08-06 00:08:38
您可以去掉html标记,然后将所有内容都放在html元素中:
$('html').html(myString.replace(/<html>(.*)<\/html>/, "$1"));
发布于 2016-07-01 20:21:55
至少在firefox(47.0)中解决方案:
var newDoc = document.open("text/html", "replace");
newDoc.write(response);
newDoc.close();
没有按照建议的那样工作,因为按下火狐上的后退按钮仍然加载以前的历史记录条目-即使用“替换”的整个要点是为了避免用户单击他们的后退按钮只是在最后一次调用document.write()之前页面视图的问候。执行此操作的方法是直接调用document对象上的方法,而不会产生上述影响:
document.open("text/html", "replace");
document.write(response);
document.close();
使用replace选项不仅避免用垃圾填充用户历史,而且还有助于处理浏览器经常处理由javascript创建的历史条目的奇怪方式所引起的问题,因为有时允许浏览器在处理后退/前进操作时,在历史中记录由javascript对文档所做的更改可能会有意想不到的结果(例如,在对历史恢复到先前状态的文档执行document.write()之后,向url添加'wyciwyg://(somenumber)‘)。
https://stackoverflow.com/questions/1236360
复制相似问题