【问题标题】:I would like to manipulate the html inside an iframe using jquery我想使用 jquery 操作 iframe 中的 html
【发布时间】:2013-10-14 01:41:57
【问题描述】:

我想我可以通过将 jQuery 函数的上下文设置为 iframe 的文档来做到这一点,例如:

$(function(){//document ready
$('some selector', frames['nameOfMyIframe'].document).doStuff()
});

但是这似乎不起作用。一些检查表明,frames['nameOfMyIframe'] 中的变量是未定义的,除非我等待一段时间让 iframe 加载。但是,当 iframe 加载时,变量不可访问(我得到权限被拒绝类型错误)。

有人知道解决这个问题的方法吗?

【问题讨论】:

  • 你好像被Same Origin Policy咬了。
  • 你对 iframe 中的文档有控制权吗?
  • 如果您遇到权限问题,我会假设 iFrame 的内容与您自己的代码所在的域不同,对吧?如果是这样,您正在尝试做一些设计上无法做到的事情。您必须查看 cross-domain Javascript(请参阅 Hamidi 的评论)。希望这可以帮助您找到解决问题的方向。如果您的页面和 iFrame 的内容都在同一个域中,那么请忽略我刚才所说的。
  • 也许您正在寻找.contents()
  • 那么有没有办法做到这一点?

标签: jquery html css iframe


【解决方案1】:

唯一的“解决方法”是,如果您无法将其他网站设为include the relevant CORS headers,则将获取 iframe 内容服务器端并将其作为来自您自己的域的服务。

之所以没有更简单的解决方法是因为有这个same origin policy : 来保护用户。

您无法使用跨域 iframe 执行任何访问

【讨论】:

    【解决方案2】:

    如上所述,您的问题是所谓的“同源策略”,本质上是与范围相关的问题。本质上独立的 html 文档之间的通信是不合法的。但是,对于 iframe 驻留在同一页面上可以在第三方中介的帮助下相互通信的几种情况,有一些变通方法,请查看这个惊人的解决方案作为示例:

    Resizing an iframe based on content

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多