2

Я использую postMessage для связи от iFrame до CRM в течение некоторого времени. Он работал в CRM 2011 и CRM 2015, но он больше не работает в CRM 2016 годаpostMessage from iFrame больше не работает в 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, измененная с введением турбо-форм (CRM 2016), обеспечивает доступ к родительскому объекту формы, который будет состоять из 2 уровней iframe.

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

Смежные вопросы