Я использую 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'
Как я могу получить родительский элемент iFrame, который вызвал прослушиватель событий postMessage
?