javascript - window.parent.postMessage 不适用于 scr ="' 数据 :text/html;charset=utf-8"in iframe

标签 javascript html angularjs

我正在尝试创建小型编辑器,允许用户使用 iframe 编辑 html。因此将 html 字符串作为 data:text/html 传递到 src 中。但通信并未发生在父窗口中。

帮我看看我做错了什么。

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>

在 Controller 中

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

最佳答案

拼写错误:

该事件称为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>

关于javascript - window.parent.postMessage 不适用于 scr ="' 数据 :text/html;charset=utf-8"in iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54402029/

相关文章:

javascript - 我如何使用 Jquery 通过它的属性值显示 DIV

javascript - 在购物车中添加多个 onclick 元素

html - 使用框架会使网站变重吗?

css - 需要根据浏览器大小调整内容 div(在页眉和页脚 div 之间)

javascript - 将数据发布到服务器 Angular $http post

c# - 从 COM .dll 获取错误 '80070002'

javascript - 一种或另一种类型(但不是两者)的数组的流类型注释

javascript - 如何使 HostListener 用于滚动工作?

javascript - AngularJs,Bootstrap Modal 表单无法正确查看

javascript - Angular Directive(指令)不适用于输入类型 = "number"