这是交易:
domain.com/page - 父页面(document.domain = domain.com)包含iframe sub.domain.com/page - 子iframe(document.domain =未设置)位于子域
有没有办法访问那个iframe的DOM,还是我运气不好?
相同的原始政策会阻止我在父网页中包含的iframe上强制使用document.domain吗?我想这会破坏相同原始策略的目的......如果是这种情况,是否有任何解决方法来访问呈现的父页面上的iframe的DOM?
答案 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进行体面的讨论。