2013-10-07 64 views
3

操纵的iframe中HTML我想我可以通过设置jQuery函数的上下文中的iframe的文档,像这样做:我想使用jQuery

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

但是,这似乎并不奏效。有点检查表明,帧['nameOfMyIframe']中的变量未定义,除非我等待iframe加载一段时间。但是,当加载iframe的变量不可访问(我得到权限拒绝类型错误)。

有没有人知道如何解决这个问题?

+8

它看起来像你要通过[同源策略]咬伤(http://en.wikipedia.org/wiki/Same-origin_policy )。 –

+0

你有没有控制iframe中的文档? – Gareth

+1

如果您获得许可问题,我会假设iFrame的内容位于与您自己的代码不同的域中,对吗?如果那是你想做的事情,那么设计就无法完成。你必须研究*跨域JavaScript *(见Hamidi的评论)。希望这可以帮助您找到解决问题的方向。如果你的页面和iFrame的内容都在同一个域中,那么忽略我刚才所说的内容。 – Renan

回答

0

如上所述,你的问题就是所谓的“相同原点策略”,它本质上是一个范围相关的问题。固有分开的html文档之间的通信是不合法的。有,但是,对于一些场合iframe的驻留在同一页上可以使用第三方中介机构的帮助下相互通信的解决方法,检查出的一个例子这个惊人的解决方案:

Resizing an iframe based on content

1

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

之所以没有简单的解决方法是由于为什么有这样的same origin policy:为了保护用户。

你不能执行与跨域iframe的任何访问