【发布时间】:2014-07-01 00:27:35
【问题描述】:
我使用postMessage 将事件从 iframe 发送到它的父文档。我可以控制双方,但内容来自两个不同的域。
我的简单问题是,我无法在其父回调方法中识别 iFrame。实现如下所示:
在 iFrame 中:
parent.postMessage(JSON.stringify({action: "closeView" }),'*');
在父窗口中:
window.addEventListener('message',function(event) {
if(event.origin !== 'https://example.com')
return;
// Parse message back to json
var messageObject = JSON.parse(event.data);
var source = event.source;
/* this is returning: Window -URL- */
console.log( source );
/* This will throw Permission denied, although this code is inside of "parent" */
console.log(source.parentNode);
},false);
我想识别 iframe 的某个父元素,它(逻辑上)在父文档内部。
当我尝试在所述对象上使用event.source.parentNode 或一些 jQuery 时,Firefox 说,我不能这样做来防止 XSS,错误:Error: Permission denied to access property 'parentNode'
如何获取触发 postMessage 事件监听器的 iFrame 的父元素?
【问题讨论】:
标签: javascript html cross-domain xss