【问题标题】:Set input text inside iframe and submit在 iframe 中设置输入文本并提交
【发布时间】:2010-11-07 14:41:55
【问题描述】:

我试图通过将值从一个传递到另一个来将两个 Web 服务粘合在一起,不幸的是,没有 API 或破解搜索查询的清晰方法,因此我需要在 iframe 中设置输入的值。

这是可怕的 iframe 的标记。

<form id="searchForm" method="post" action="/search/initialSearch">         
  <fieldset class="searchFields">
    <input type="text" name="searchTerm" value=""/>
    <input type="submit" value="Find stops"/>
  </fieldset>
</form>

我需要设置 searchTerm 文本,然后提交表单。

注意:这是针对移动设备的,所以我更喜欢真正轻量级的解决方案

【问题讨论】:

    标签: javascript html forms iframe


    【解决方案1】:

    是不是很简单:

    myframe.document.getElementById("searchForm").searchTerm.value = 'hello';
    myframe.document.getElementById("searchForm").submit();
    

    确保您的脚本在 iframe 加载后运行。您的iframe 标记有一个onload 事件,您可以使用该事件来确定何时加载框架内的页面。

    <iframe src="formPage.html" onload="loaded()" name="myframe" />
    

    【讨论】:

    • 谢谢,如何确保框架已加载?是否触发了某种事件?
    • 可以在iframe的onload属性中添加函数引用:
    • 如果你在做跨域的事情,你会遇到问题,这是需要注意的一件事。否则,这绝对是一个可行的解决方案。
    • 完全正确,斯托伯。我继续更新了代码 - 我本能地使用谷歌作为我的例子 - 不应该:)
    • 感谢更新的代码示例,非常干净。我实际上在做跨域的事情,所以看起来我需要一个小代理
    【解决方案2】:

    请注意,如果您的 iframe 源不是来自您的服务器,则无法使用 javascript 从包含 iframe 的页面访问其内容。如果您有权访问来自另一台服务器的 iframe 的内容,那么您可以通过以下方式访问父页面中的所有数据:

    window.top
    

    如果您无权访问 iframe 的页面,那么您无能为力。

    【讨论】:

      【解决方案3】:

      您是否能够从您的服务器代码访问网络服务?

      如果是这样,我会解雇 iframe 并在您的服务器上创建一个代理。这将使您的 HTML 对目标受众保持干净和轻量。

      【讨论】:

      • 这似乎是个好主意,我正在使用 php 有任何代码或链接用于简单代理?
      • 抱歉,Tom 我自己也是一名 ASP.NET 人员。如果我遇到任何示例,我会发布它们。
      猜你喜欢
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-13
      • 2013-05-22
      • 2016-02-20
      • 1970-01-01
      • 2016-04-22
      相关资源
      最近更新 更多