уже все перепробовал не могу понять в чем дело...
Делаю виджет который устанавливается на сайте с помощью подключения JS скрипта.
Примерно так:
<script src="//app.localhost/widget/v1" type="application/javascript"></script>
<script type="text/javascript">
var Widget116;
document.addEventListener("DOMContentLoaded", function() {
Widget116= new GoWidget({
id: 116,
openSelector: '.go-show-MnJa2hqMsFkRtBC',
autoOpen: false,
autoOpenDelay: 0,
openBeforeClose: false,
}).init()
});
</script>
в коде скрипта: //app.localhost/widget/v1 создается сам html каркас виджета, создается iframe и в атрибут src подставляется нужный url виджета, вот таким образом:
// все что тут делается это в конец body вставляется frame
GoWidget.prototype.createWidget = function () {
var tt = this
var elWrapper, elModal, elWidget, elCurtain, elClose
elWrapper = document.createElement('div'),
elModal = document.createElement('div'),
elWidget = document.createElement('iframe')
elCurtain = document.createElement('div')
elClose = document.createElement('div')
elCurtain.className = 'b-start'
elClose.className = 'b-icon-close'
elWrapper.className = 'b-wrapper b-wrapper__' + tt.params.id
elModal.className = 'b-modal'
elWidget.setAttribute('id', 'iframe-widget-'+tt.params.id)
if (tt.params.noStatic){
elWidget.setAttribute('src', tt.assets.widgetUrl+'?noStatic=noStatic')
}else{
elWidget.setAttribute('src', tt.assets.widgetUrl)
}
elWrapper.appendChild(elModal)
elModal.appendChild(elClose)
elModal.appendChild(elCurtain)
elModal.appendChild(elWidget)
document.body.appendChild(elWrapper);
return this
}
iframe встроился в страницу все ок
теперь я пытаюсь из скрипта виджета достучатся в iframe и передать ему данные, в файле //app.localhost/widget/v1
пишу:
GoWidget.prototype.setEvents = function () {
var this_ = this
setTimeout(function () {
var iframe = document.getElementById('iframe-widget-'+this_.params.id);
console.log('Call testMessage', iframe.contentWindow)
iframe.contentWindow.postMessage("onmessage", "http://app.localhost");
}, 3000)
return this
}
в документе который погрузился в iframe написал так:
window.addEventListener('onmessage', function(event) {
console.log('onmessage get');
});
в консоли вижу:
Но надпись onmessage get нету. то есть событие в iframe не уходит, что я не так делаю?