0

別の関連する質問を投稿しました: Java サーブレット: 一時ファイルの削除

@BalusC の提案に従って、私は何か違うものを実装しようとしましたが、成功しませんでした。

したがって、次の質問をしたい: 実行時に HTML コンテンツを iframe に「挿入」することは可能ですか?

明確にするために、私はサーブレットと JSP を使用しています。doPostJSP ページに入力して表示するサーブレットが 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 ページを作成し、そこにコンテンツを挿入することを考えましたが、それは私が望むものではありません...

前もって感謝します!

4

1 に答える 1

0

私は実際に自分で問題を解決することができました。

結局、私は JavaScript に戻りました。Beans を使用して、ページのコンテンツを JSP ページに渡すことができました。そこでは、ドキュメントの行を 1 行ずつ「エコー」するだけです。特殊文字をエスケープする際にいくつかの問題が発生したことに興味のある人にアドバイスする必要があります。場合によっては、CR と LF を手動でエスケープする必要が</script>あり、JavaScript が途中で終了するため、ページ内の既存のタグを処理する必要がありました。ここの別のスレッドで提案されているように、文字'<'をに変更することで、この困難を克服することができました。\x3C

于 2013-08-01T13:11:09.983 に答える