麻烦iframes

时间:2011-07-11 04:18:46

标签: javascript jquery html ruby-on-rails iframe

我正在为很多不同的随机网站动态生成iframe,我倾向于在我的javascript控制台中收到此错误(不一定是这个网址):

Unsafe JavaScript attempt to access frame with URL http://localhost:3000/results/ from frame with URL http://www.apple.com/iphone/. Domains, protocols and ports must match.

为什么我收到此错误?有没有办法摆脱它?

因此我在javascript中与iframe交互的唯一两次是我在iframe中动态加载时:

$("#results_div").html('<iframe src='+url+' frameborder="0" class="iframe"><p>Browser does not support iframes.</p></iframe>');

当我拉出iframe的src属性时:

var previewed = $("iframe").attr("src");

哪一个导致错误?

3 个答案:

答案 0 :(得分:4)

iframe中的脚本正在尝试访问父级的脚本/ dom,并且它们位于不同的域中。跨域脚本通常会产生错误。

在您的情况下,apple.comlocalhost是不同的域名,而iframe正在尝试访问其父窗口的脚本或dom元素。

解决这个问题的几种方法:

答案 1 :(得分:0)

这是因为您的脚本试图访问另一个域上的某些代码。通过阅读Same origin Policy可以理解此行为。 http://en.wikipedia.org/wiki/Same_origin_policy

有一些解决方法和一些实现可以解决此问题。

其中一些使用代理方法,片段标识符方法。

在HTML5中,我们可以使用postmessages来解决此问题。

但你必须弄清楚什么对你有用。

答案 2 :(得分:0)

除了将域名加载到iframe中之外,您无法使用javascript或iframe与其他域进行互动。