如何从父页面访问 iframe 中的 JavaScript 对象?

14

能否从父页面的javascript中访问iframe的javascript对象?


2
这取决于 iframe 是否来自相同的域。如果是,则是,如果不是,则不是。 - Felix Kling
3个回答

27

尝试这样做。我假设您的iFrame的id为"targetFrame",您想要调用的对象是targetObject,并且它们拥有相同的域名。如果它们不是相同的域名,我认为这是不可能的。

document.getElementById('targetFrame').contentWindow.targetObject

7
请记住,您必须在同一领域中才能访问子窗口对象。 - Abdul Munim

5
如果iframe的src与父级不在同一起源/域中,则会有限制,因为由于同源策略(安全策略),该策略旨在阻止访问私有数据,如CSRF令牌和存储在框架中的其他私有数据。例如,如果您构建一个带有bank.com的iframe的HTML页面,那么当人们进入您的站点时,如果他们已登录bank.com,则其私有数据将存储在该iframe中,因此同源策略将阻止不同起源通过iframes访问彼此的数据。详见:https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

2
您可以使用父窗口对象访问子iframe的对象。
alert( window.frames[0].variable_name );

它将显示来自第一个iFrame的变量variable_name的值。可以使用frame列表的索引来访问跨帧的变量值。


ES6/ES2015更新:仅当variable_name声明为var variable_name;而不是let variable_name;时才有效。MDN:"letvar不同,不会在全局对象上创建属性。" - cxw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接