2

私はしばらくの間、iFrameからCRMに通信するためにpostMessageを使用してきました。これは、CRM 2011年およびCRM 2015で働いていませんが、それはもはやCRM 2016postMessage 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は、()のページに呼び出されます私はそれが呼ばれていることを確認しました。私は "*"をターゲットの起源として使用しようとしましたが、それはまだ動作しません。これはまだ2016 CRMで実行可能な選択肢である場合

は誰でも知っていますか?

答えて

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

関連する問題