我们如何发布到iframe?

时间:2020-03-06 15:05:32  来源:igfitidea点击:

我们如何将数据发布到iframe?

解决方案

取决于"发布数据"的含义。我们可以在<form />标签上使用HTMLtarget =""`属性,因此它很简单:

<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等时才会发生(此处有一种变通方法),但是如果我们使用的是普通HTML标记,就可以了。目标属性和框架名称并不是聪明的忍者破解;尽管在HTML 4 Strict或者XHTML 1 Strict中已弃用(因此不会验证),但自3.2起它已成为HTML的一部分,正式成为HTML5的一部分,并且自Netscape 3起几乎在所有浏览器中均可使用。

我已验证此行为可与XHTML 1 Strict,XHTML 1 Transitional,HTML 4 Strict一起使用,并且在未指定DOCTYPE的"怪异模式"下运行,并且在所有情况下都可以使用Internet Explorer 7.0.5730.13运行。我的测试用例由两个文件组成,在IIS 6上使用经典的ASP;第二个文件由两个文件组成。它们已在此处完整复制,因此我们可以自己验证此行为。

default.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>

我将非常有兴趣听到任何无法正确运行这些示例的浏览器。