我在MS Dynamics CRM和我的javascript应用程序之间进行集成时遇到问题。
我需要在“机会”页面和iFrame中的应用之间建立通信。
问题是,当我需要访问页面中的XRM对象时,我总是得到Access Denied
错误
我试过了:
parent.window.Xrm.Page.data.entity.attributes.get(“stateCode”).getValue();
当我从IE Dev工具调用此函数时,它工作正常。但是从我的JS应用程序中它会抛出Access Denied。
我阅读了很多有关iFrame集成的内容,但没有一项适用于MS Dynamics 365.
答案 0 :(得分:2)
如果您的JavaScript应用程序托管在Dynamics环境之外,则“拒绝访问”的问题可能与CORS策略有关。为了避免我的一个项目出现此问题,我们使用postMessage API(https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)而不是直接访问DOM模型,以便在CRM表单和IFRAME站点之间发送/接收消息。
我写博客文章描述了如何让它发挥作用(不幸的是它是波兰语,但也许一些自动翻译会有所帮助;)):http://xrmlabs.piotrgaszewski.pl/?p=455
答案 1 :(得分:1)
在CRM表单上的IFrame中加载的HTML Web资源的parent.window
实际上不是表单的窗口。事实上,在 Turbo Forms 模式下,无法使用DOM访问表单的窗口。
还有其他一些选择: