1. ホーム
  2. post

[解決済み】iframeに投稿する方法は?

2022-04-14 06:43:29

質問

iframeにデータを投稿する方法を教えてください。

どのように解決するのですか?

投稿データとは何を意味するのかによります。HTMLの target="" 属性は <form /> タグのように、単純なものでもよいのです。

<form action="do_stuff.aspx" method="post" target="my_iframe">
  <input type="submit" value="Do Stuff!">
</form>

<!-- when the form is submitted, the server response will appear in this iframe -->
<iframe name="my_iframe" src="not_submitted_yet.aspx"></iframe>

もしこれでない場合、あるいはもっと複雑なものをお求めの場合は、質問をより詳細に編集してください。

Internet Explorerには、Javascriptを使用してiframeなどを動的に作成する場合にのみ発生する既知のバグがあります(iframeの中に 回避策はこちら が、通常のHTMLマークアップであれば問題ありません。HTML 4 Strict や XHTML 1 Strict では非推奨(したがって検証されない)でしたが、HTML 3.2 からは含まれていますし、HTML5 にも正式に含まれ、Netscape 3 以降のほぼすべてのブラウザで機能します。

この動作は、XHTML 1 Strict、XHTML 1 Transitional、HTML 4 Strict、および DOCTYPE を指定しない "quirks mode" で動作することを確認し、Internet Explorer 7.0.5730.13 ですべてのケースで動作することを確認しました。私のテストケースは、IIS 6 でクラシック ASP を使用した 2 つのファイルから構成されています。

デフォルト.asp

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>Form Iframe Demo</title>
  </head>
  <body>
  <form action="do_stuff.asp" method="post" target="my_frame">
    <input type="text" name="someText" value="Some Text">
    <input type="submit">
  </form>
  <iframe name="my_frame" src="do_stuff.asp">
  </iframe>
  </body>
</html>

do_stuff.asp

<%@Language="JScript"%><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>Form Iframe Demo</title>
  </head>
  <body>
  <% if (Request.Form.Count) { %>
  You typed: <%=Request.Form("someText").Item%>
  <% } else { %>
  (not submitted)
  <% } %>
  </body>
</html>

これらの例が正しく実行されないブラウザがあれば、ぜひ教えてください。