window.parent.postMessage не работает с scr = "'data: text / html; charset = utf-8" в iframe - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь создать небольшой редактор, который позволяет пользователю редактировать HTML, используя iframe.поэтому передача строки html в src в виде данных: text / html.но общение не происходит в родительское окно.

помогите мне, что я делаю неправильно.

index.html

<iframe id="creditMailBody"  class="iframe-main-content" src="{{creditMail.content}}"></iframe>

в html-строке

<html>
<head>
</head>
<body>
<p id="editor" contentEditable="true"></p>
</body>
<script>
  document.getElementById("editor").addEventListener("input", function() {
    console.log("input event fired");
    window.parent.postMessage('iframe_message', '*')
  }, false);
 </script>
</html>

в контроллере

window.addEventListener('iframe_message', function() {
  console.log('iframe message')
}, true);

1 Ответ

0 голосов
/ 28 января 2019

Опечатка:

Событие называется message, а не iframe_message:

const frame_content = `<html>
<head>
</head>
<body>
<p id="editor" contentEditable="true">edit me</p>
</body>
<script>
  document.getElementById("editor").addEventListener("input", function() {
    console.log("input event fired");
    window.parent.postMessage('iframe_message', '*')
  }, false);
 <\/script>
</html>`;
frame.src = 'data:text/html,' + encodeURIComponent(frame_content);

window.addEventListener("message", function() {
                      //  ^-- Here it is "message"
  console.log('iframe message')
});
<iframe id="frame"></iframe>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...