Это должно быть здесь, потому что принят ответ от 2012
В 2018 и современных браузерах вы можете отправлять пользовательское событие из iframe в родительское окно.
IFrame:
var data = { foo: 'bar' }
var event = new CustomEvent('myCustomEvent', { detail: data })
window.parent.document.dispatchEvent(event)
Родитель:
window.document.addEventListener('myCustomEvent', handleEvent, false)
function handleEvent(e) {
console.log(e.detail) // outputs: {foo: 'bar'}
}
PS: Конечно, вы можете отправлять события в противоположном направлении.
document.querySelector('#iframe_id').contentDocument.dispatchEvent(event)