別の関連する質問を投稿しました: Java サーブレット: 一時ファイルの削除
@BalusC の提案に従って、私は何か違うものを実装しようとしましたが、成功しませんでした。
したがって、次の質問をしたい: 実行時に HTML コンテンツを iframe に「挿入」することは可能ですか?
明確にするために、私はサーブレットと JSP を使用しています。doPost
JSP ページに入力して表示するサーブレットが 1 つあります。ページは次のとおりです。
<%@ 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 のソースを更新しようとしましたが、機能しますが、遅延があり、ページが 2 回読み込まれます。これは望ましくありません。私もそれをやろうとしましたdocument.write()
iframe オブジェクトの JavaScript で、再び成功しませんでした。
最後の明確化: iframe にはページの HTML 全体が含まれ、タグ<html>
と</html>
タグが完全に含まれている必要があります: おそらく DIV を使用して JSP ページを作成し、そこにコンテンツを挿入することを考えましたが、それは私が望むものではありません...
前もって感謝します!