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