来自iFrame的postMessage不再在CRM 2016中工作

postMessage from iFrame no longer works in CRM 2016 on premise

本文关键字:CRM 2016 工作 不再 iFrame postMessage 来自      更新时间:2023-09-26

我已经使用postMessage从iFrame到CRM进行通信一段时间了。它在CRM 2011和CRM 2015中有效,但在CRM 2016中不再有效。

iFrame javascript代码:

    var pass_data = {
        'refresh': 'false',
        'expand': 'true'
    };        
    window.parent.postMessage(JSON.stringify(pass_data), 'crm url');
CRM javascript:

function setListener() {
  if (window.XMLHttpRequest) {
    //for browsers other than ie
    window.addEventListener("message", receivePostMessage, false);
  } else {
    //ie
    window.attachEvent('onmessage',receivePostMessage);
  }
} 
function receivePostMessage(event) {
   //do something with event.data
   var pass_data = JSON.parse(event.data);
   alert(pass_data);
  }

setListener()在页面加载时被调用,并且我已经确认它正在被调用。我试过使用"*"作为目标原点,它仍然不起作用。

有人知道这在CRM 2016中是否仍然是一个可行的选择吗?

CRM对象模型随着turbo表单的引入而改变(CRM 2016),访问表单的父对象,这将是iframe的2级。

function setListener() {
  if (window.XMLHttpRequest) {
    //for browsers other than ie
    window.parent.addEventListener("message", receivePostMessage, false);
  } else {
    //ie
    window.parent.attachEvent('onmessage',receivePostMessage);
  }
window.parent.parent.postMessage(JSON.stringify(pass_data), 'crm url');