2

저는 postMessage를 사용하여 iFrame에서 CRM으로 얼마 동안 통신했습니다. 그것은 CRM 2015 CRM 2011 년과에서 근무 없지만 더 이상 CRM 코드 자바 스크립트 2016iFrame의 postMessage가 더 이상 CRM 2016에서 작동하지 않습니다.

iframe이 작동합니다

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

CRM의 자바 스크립트 :

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)의 도입으로 변경되어 양식의 부모 개체에 액세스합니다. 양식의 부모 개체는 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