来自 iFrame 的 postMessage 不再适用于本地 CRM 2016
postMessage from iFrame no longer works in CRM 2016 on premise
一段时间以来,我一直在使用 postMessage 从 iFrame 与 CRM 进行通信。它在 CRM 2011 和 CRM 2015 中有效,但在 CRM 2016 中不再有效。
iFrame javascript代码:
var pass_data = {
'refresh': 'false',
'expand': 'true'
};
window.parent.postMessage(JSON.stringify(pass_data), 'crm url');
客户关系管理 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 中是否仍然是一个可行的选项?
CRM 对象模型随着 turbo 表单的引入而改变(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');
一段时间以来,我一直在使用 postMessage 从 iFrame 与 CRM 进行通信。它在 CRM 2011 和 CRM 2015 中有效,但在 CRM 2016 中不再有效。
iFrame javascript代码:
var pass_data = {
'refresh': 'false',
'expand': 'true'
};
window.parent.postMessage(JSON.stringify(pass_data), 'crm url');
客户关系管理 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 中是否仍然是一个可行的选项?
CRM 对象模型随着 turbo 表单的引入而改变(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');