从外部iframe CRM 2013打开实体

时间:2014-07-22 08:31:46

标签: javascript dynamics-crm-2011 dynamics-crm-2013

我们有一个CRM 2011解决方案,其中包含几个基于ASP.NET MVC的自定义视图和表单,这些视图和表单显示在CRM中实体的iframe中。目前我们正在对升级到CRM 2013进行一些分析,我们遇到了打开实体窗口的问题。

我们在整个解决方案中大多使用window.open,无论是在CRM端的JavaScripts中,还是在自定义ASP.NET MVC应用程序中。传递给window.open的网址格式如下:

http://crm.contoso.com/Contoso-Org/main.aspx?etn=opportunity&pagetype=entityrecord&id={...}

问题是,这似乎记住了它在CRM 2013中打开时的背景,因此它只是重新打开它所打开的实体。我们使用Xrm.Utility.openEntityForm代替了在CRM端解决了这个问题,但对于自定义应用程序来说,它似乎不太可能,因为我们无法从内部访问Xrm库。 iframe中。该网址是正确的,如果将其复制粘贴到新标签中,则会正确加载所需的实体。但是当加载window.open时,它只会重新打开同一个实体。

一些建议指出将histKey参数附加到打开的URL中,该参数由随机生成的数字组成。但是,这不能始终如一地工作 - 有时它会打开正确的实体,有时它只是重新打开当前的实体 - 也不会在任何地方正式记录。

有没有人遇到过这方面的解决方案?

2 个答案:

答案 0 :(得分:2)

我在打开CRM 2013网址时遇到了类似的问题,并且能够通过添加两个查询字符串 histKey (以随机数作为值)和 newWindow 来修复它到URL,如下:

  • "histKey=" + Math.floor(Math.random() * 10000)
  • "newWindow=true"

希望这有帮助。

答案 1 :(得分:0)

尝试以下方法:

  1. 将A标记目标更改为_blank

  2. 为窗口指定一个新名称,即打开(url,new_name,features)

  3. 解决方法可能是在您的MVC应用程序中创建一个IFRAME,并将URL传递回最终打开帐户表单的CRM表单。

  4. 使用Wscript.Shell ActiveX打开新的IE流程(最后的手段)。

  5. 此链接可能有所帮助 http://steveliles.github.io/cross_domain_inter_frame_communication_in_javascript.html

  6. HTH

    Dynamics CRM - Thinking outside the BOX