Сообщение от ruslan_mart
|
подвох в том, что при document.write - window как-то обнуляется, т.е. ссылка на него остаётся та же, но он рефрешится. А все глобальные переменные остаются на месте.
|
Документ перезаписывается.
Обработчик события висит на документе, так что он пропадает.
Можно заново назначать обработчик.
(function() {
var frame = document.createElement('iframe');
var write = function(content) {
frame.contentWindow.postMessage(content, '*');
};
frame.onload = function() {
write('<div>Line 1</div>');
write('<div>Line 2</div>');
};
frame.src = 'data:text/html,' + encodeURIComponent(`
<script>
var onMessage = function onMessageFn (event) {
console.log(event.data);
document.write(event.data);
window.onmessage = onMessageFn;
};
window.onmessage = onMessage;
<\/script>
`);
document.addEventListener('DOMContentLoaded', function() {
document.body.appendChild(frame);
});
})();