我正在为很多不同的随机网站动态生成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");
哪一个导致错误?
答案 0 :(得分:4)
iframe中的脚本正在尝试访问父级的脚本/ dom,并且它们位于不同的域中。跨域脚本通常会产生错误。
在您的情况下,apple.com
和localhost
是不同的域名,而iframe正在尝试访问其父窗口的脚本或dom元素。
解决这个问题的几种方法:
postmessage
:http://ajaxian.com/archives/cross-window-messaging-with-html-5-postmessage 答案 1 :(得分:0)
这是因为您的脚本试图访问另一个域上的某些代码。通过阅读Same origin Policy可以理解此行为。 http://en.wikipedia.org/wiki/Same_origin_policy
有一些解决方法和一些实现可以解决此问题。
其中一些使用代理方法,片段标识符方法。
在HTML5中,我们可以使用postmessages来解决此问题。
但你必须弄清楚什么对你有用。
答案 2 :(得分:0)
除了将域名加载到iframe中之外,您无法使用javascript或iframe与其他域进行互动。