如何获取iFrame的元素/名称(沙箱属性不允许使用相同来源)将postMessage发送给父级

时间:2015-10-11 17:58:59

标签: javascript html iframe sandbox same-origin-policy

现在我有3个名称为“iframe1”,“iframe2”和“iframe3”的iframe,所有这些iframe都是同源的,我控制着双方。 其中一个iframe将一些postMessage发送给父级。

我想实现两件事:

  1. 能够在内部标识发送postMessage的iframe的元素(或名称)。
  2. 但也阻止iframe访问父级的Window对象。
  3. 我在所有iframe上都使用了HTML5 sandbox属性,允许除“allow-same-origin”之外的所有内容。我成功地无法再从iframe访问父对象,问题是我无法识别iframe发送postMessage的元素了。这是因为“e.source.name”(e是收到的消息返回的事件对象)触发Sandbox访问冲突的SecurityError并且缺少“allow-same-origin”标志。

    我测试了其他事件对象的属性:

    e.origin - 返回null。

    e.source - 返回Window对象,但无法访问其属性和方法

    问题是: 如何知道将postMessage发送给父级的iFrame元素的名称,并阻止iFrames访问父级对象?也许还有其他解决方法而不在iframe上使用沙盒?

0 个答案:

没有答案