从父页面访问子iFrame DOM

时间:2011-03-03 14:19:21

标签: javascript iframe same-origin-policy

这是交易:

domain.com/page - 父页面(document.domain = domain.com)包含iframe sub.domain.com/page - 子iframe(document.domain =未设置)位于子域

有没有办法访问那个iframe的DOM,还是我运气不好?

相同的原始政策会阻止我在父网页中包含的iframe上强制使用document.domain吗?我想这会破坏相同原始策略的目的......如果是这种情况,是否有任何解决方法来访问呈现的父页面上的iframe的DOM?

3 个答案:

答案 0 :(得分:28)

有一种方法。加载iframe中的页面时,请执行以下操作

parent.childGetElementById = function (id) {return document.getElementById(id);}
parent.childLoaded();

这将在父页面的全局范围(包含iframe)中创建一个函数。然后在父母中,只需要以下

function childLoaded() {var dom = childGetElementById('someid');}

这是因为您可以控制加载到iframe中的页面...如果您没有,那么您运气不佳。

答案 1 :(得分:7)

这是一项浏览器安全措施,否则每个人都会在您登录时包装您的银行网站并浏览密码。

您可以从iframe与父级对话,但不能再次回到iframe。

答案 2 :(得分:0)

据我所知,你运气不好。您可以使用URL中的hash-bang在它们之间进行交谈,请参阅this进行体面的讨论。