2

我一直在使用postMessage从iFrame向CRM通信一段时间。它的工作在2011年CRM和CRM 2015年,但它不再在CRM 2016年工作来自iFrame的postMessage不再适用于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中可行的选择?

回答

5

CRM objectmodel随着涡轮形式(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'); 
+0

我试过它仍然不能正常工作。我尝试过使用*,CRM Url和UrlReferrer。 – ijason03

+1

编辑我的答案,即使附加事件,你也需要使用window.parent,我认为这是自我解释,我的坏。 – dynamicallyCRM

+0

谢谢,工作! – ijason03