我发布了另一个相关问题:Java Servlet:删除临时文件
根据@BalusC 的建议,我一直在尝试实现一些不同的东西,但没有成功。
因此,我想问以下问题:是否可以在运行时将 HTML 内容“注入”到 iframe 中?
澄清一下,我正在使用 Servlet 和 JSP。我有一个 servletdoPost
填充并显示 JSP 页面。页面如下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script> function disp() {
alert(document.getElementById('ifrm').contentDocument.documentElement.innerHTML); }
</script>
<style type="text/css">
html, body, div { margin:0; padding:0; height:100%; }
iframe { display:block; width:100%; height:90%; border:none; }
</style>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>This is SPARTA!!</title>
</head>
<body>
<a href='getter?url=<%= request.getRequestURI() %>&starter=fine'>Close Session</a>
<input type='button' onclick='disp()' value='Source'></input>
You want me to load: <%= request.getParameter("url") %> , and here it is:
<iframe id='ifrm' src='<%= request.getSession().getAttribute("relpath") %>'></iframe>
</body>
</html>
“relpath”是我在前一点添加到会话的属性,表示临时文件的相对路径。它有效,但我有一个不可告人的问题:iframe 中包含的页面中的链接已适当更改,以便它们正常运行。效果是人们可以在 iframe 内导航,就好像它是浏览器选项卡一样。因此,当单击页面上的链接时,临时文件会用链接指向的站点的内容重写。但是,页面没有重新加载,我认为这是因为浏览器检索缓存的页面,而不是浏览器中的页面。我尝试通过 JavaScipt 刷新 iframe 的源并且它起作用,但是有延迟,并且页面加载了两次 - 我不希望那样。我也试过用document.write()
在 iframe 对象上的 JavaScript 中,再次没有成功。
最后澄清一下:iframe 应该包含页面的整个 HTML,并带有<html>
and</html>
标记:我确实想过创建一个带有 DIV 的 JSP 页面,并在那里注入内容,但这也不是我想要的......
先感谢您!