Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从microsoft dynamics crm表单到html web资源获取价值_Javascript_Html_Dynamics Crm_Dynamics Crm 2016 - Fatal编程技术网

Javascript 如何从microsoft dynamics crm表单到html web资源获取价值

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

我正在从事Microsoft Dynamics CRM 2016。在我的Lead表单上有一个
描述
字段,我还添加了一个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
  • 启用了将记录对象类型代码和唯一标识符作为参数传递的选项
  • 在依赖项中添加了
    说明

您可以将JavaScript onChange()事件附加到
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, '*');