可以从位于不同子域的iframe访问父页面上的函数吗?

use*_*518 4 javascript security iframe jquery

我试图从iframe访问位于父页面上的函数.我收到以下错误,因为他们使用不同的子域:

未捕获的SecurityError:阻止具有原点" http://subdomain.domain.com "的框架访问具有原点" http://subdomain2.domain.com " 的框架.协议,域和端口必须匹配.

我在用:

window.parent.myFunction(); 
Run Code Online (Sandbox Code Playgroud)

访问父页面上的功能.

有没有针对此的解决方法,或者它根本不起作用,因为它们是不同的子域?

bob*_*nce 9

Blocked a frame with origin "http://subdomain.domain.com" from accessing a frame with origin "http://subdomain2.domain.com"
Run Code Online (Sandbox Code Playgroud)

如果添加以下行:

document.domain = 'domain.com';
Run Code Online (Sandbox Code Playgroud)

对于两个帧中的脚本,它们将能够直接与彼此的对象进行交互.有关背景,请参阅MDN.

然而,跨框架脚本散布着令人讨厌的角落情况,其中一个框架执行来自另一个框架的东西,而该框架正在忙于做其他事情,或者尚未完全加载.对于任何重要的事情,我都会避免使用直接的跨框架脚本.

更现代的替代方法是将执行保持在单个帧中,并使用postMessage跨帧进行通信.支持.