首页 文章

来自iFrame的postMessage不再适用于CRM 2016内部部署

提问于
浏览
2

我一直在使用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中是否仍然是一个可行的选择?

1 回答

  • 5

    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');
    

相关问题