现在我有3个名称为“iframe1”,“iframe2”和“iframe3”的iframe,所有这些iframe都是同源的,我控制着双方。 其中一个iframe将一些postMessage发送给父级。
我想实现两件事:
我在所有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上使用沙盒?