Javascript 如何从microsoft dynamics crm表单到html web资源获取价值
我正在从事Microsoft Dynamics CRM 2016。在我的Lead表单上有一个Javascript 如何从microsoft dynamics crm表单到html web资源获取价值,javascript,html,dynamics-crm,dynamics-crm-2016,Javascript,Html,Dynamics Crm,Dynamics Crm 2016,我正在从事Microsoft Dynamics CRM 2016。在我的Lead表单上有一个描述字段,我还添加了一个HTML web资源。当我在CRM表单上输入说明值时,它应该显示在我的HTML web资源上 如何做到这一点 HTML web资源代码: <html> <head> <script src="../ClientGlobalContext.js.aspx" type="text/javascript"></script> <scr
描述
字段,我还添加了一个HTML web资源。当我在CRM表单上输入说明
值时,它应该显示在我的HTML web资源上
如何做到这一点
HTML web资源代码:
<html>
<head>
<script src="../ClientGlobalContext.js.aspx" type="text/javascript"></script>
<script text="text/javascript">
var description = Xrm.Page.getAttribute("description").getValue();
</script>
</head>
<body>
<table>
<thead><tr><th>Parameter</th><th>Value</th></tr></thead>
<tbody>
<tr><td>description</td><td id="description">null</td></tr>
</tbody>
</table>
</body>
</html>
var description=Xrm.Page.getAttribute(“description”).getValue();
参数值
descriptionnull
然后在web资源的属性中,我有:
- 添加了一个自定义参数:(数据)=RelatedEntity=leads&RelatedField=description
- 启用了将记录对象类型代码和唯一标识符作为参数传递的选项
- 在依赖项中添加了
说明
description
属性。事件将获取描述的值,然后从HTML控件获取元素,然后将元素的值设置为description
属性的值
下面是一个可能的外观示例:
function descriptionOnChange() {
// Get the value of the description attribute.
var description = Xrm.Page.getAttribute('description').getValue();
// Get the HTML iFrame object.
var iFrame = Xrm.Page.ui.controls.get('IFRAME_WebResourceName').getObject();
// Get the element from the iFrame.
var element = iFrame.contentWindow.document.getElementById('htmlDescription');
// Set the element's value.
element.value = description;
}
注意:确保在iFrame的属性中未禁用跨帧脚本:
但是,如果跨域iFrame请求被阻止,您可能会收到错误。有关说明和解决方法,请参阅 CRM中的解决方案实施可能如下所示:
标记添加到HTML的
以接受和处理消息:
<script>
window.addEventListener('message', function(event) {
if (~event.origin.indexOf('https://<yourCRMUrl>')) {
document.getElementById('htmlDescription').value = event.data;
} else {
return;
}
})
</script>
您可以尝试以下方法:
函数onLoad(){
var description=parent.Xrm.Page.getAttribute(“description”).getValue();
document.getElementById(“description”).innerHTML=description;
}
参数值
descriptionnull
您应该展开问题以表明您试图解决问题(即描述一个或多个您尝试但不适用于您的解决方案,并说明其不适用于您的原因),否则由于您缺乏研究,该问题将被否决和忽略。此外,包括CRM版本(2016意味着8.0或8.1?),或者只是让web资源显示WebAPI中字段的值,并以刷新iframe onSave的形式。鉴于问题中的信息有限,我已经做了很多假设。一是HTML iFrame接收数据越快越好。谢谢您的回复。我编辑了我的问题,这是我尝试过的。基于此,您能帮我一下吗?parent.Xrm.Page.getAttribute()已被弃用。从2020年5月2日起,声明:尽管Xrm.Page已被弃用,但如果表单中嵌入HTML web资源,parent.Xrm.Page将继续工作,因为这是从HTML web资源访问表单上下文的唯一方法。非常感谢!这篇文章对我帮助很大。
var description = Xrm.Page.getAttribute("description").getValue();
var iFrame = Xrm.Page.ui.controls.get('IFRAME_WebResourceName').getObject();
iFrame.contentWindow.postMessage(description, '*');