【问题标题】:How to access element present inside a iframe from parent window?如何从父窗口访问 iframe 中存在的元素?
【发布时间】:2013-07-16 15:54:48
【问题描述】:

我有一个 iframe。我想访问 iframe 中存在的表。我想从 iframe 的父窗口访问它。我写过类似的JS

Document.getElementById("table Id");

但结果为空。获得它的过程是什么? 谢谢

【问题讨论】:

  • 我觉得这在现在是不可能的,是跨域吗?
  • @fskreuz 仅当 iframe 不在同一个域中时的情况。否则访问 iframe 中的元素没有问题。
  • @user1122379 您应该提及 iframe 是否在同一个域中,因为问题的答案很大程度上取决于这一事实。

标签: javascript html iframe


【解决方案1】:
x=document.getElementById("iFrameId"); x.contentDocument.getElementById("tableId");

如果你可以使用 jQuery,我想它可以跨浏览器工作

$("#iFrameId").contents().find("#tableId")

【讨论】:

  • 谢谢。但它不起作用。现在我在想我可以使用 div 并使用 PHP httprequest 将 div 填充到 url。但我不知道该怎么做那个httpRequest。请给我一些示例代码吗?
【解决方案2】:

您必须从 iFrame 的文档中选择元素。根据 Juan 的评论,检查 iFrame 的名称和 id

var targetFrame = window.frames["nameOfIFrame"] || window.frames["iFrameId"];
targetFrame.document.getElementById("tableId");

编辑

我刚刚用以下方法对此进行了测试:

window.frames["fName"].document.getElementById("Adam").innerHTML

在 Chrome 控制台中,它会从我的 iframe 中输出 Adam div 的 html。

【讨论】:

  • 这有什么问题? window.frames["iFrameId"].document.getElementById 似乎作为原生方法回归
  • @PenchoIlchev - 该问题涉及 不同域 上的 iframe 加载代码 - OP 从未说过这里是这种情况。假设 iFrame 正在加载相同的域,上面的代码似乎工作正常——我刚刚测试过它
  • frames[frameName] 是访问框架内窗口对象的最佳跨浏览器方式。您的示例暗示了一个 ID,但我的经验是您还应该使用 name 属性。 stackoverflow.com/questions/1644676/…
  • @JuanMendes - 谢谢。我对其进行了测试,并且使用 iFrame 的名称效果非常好。我不知道这比使用 id 更好,但我编辑了我的答案。
猜你喜欢
  • 2011-10-25
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
相关资源
最近更新 更多