我们有一个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中,该参数由随机生成的数字组成。但是,这不能始终如一地工作 - 有时它会打开正确的实体,有时它只是重新打开当前的实体 - 也不会在任何地方正式记录。
有没有人遇到过这方面的解决方案?
答案 0 :(得分:2)
我在打开CRM 2013网址时遇到了类似的问题,并且能够通过添加两个查询字符串 histKey (以随机数作为值)和 newWindow 来修复它到URL,如下:
"histKey=" + Math.floor(Math.random() * 10000)
"newWindow=true"
希望这有帮助。
答案 1 :(得分:0)
尝试以下方法:
将A标记目标更改为_blank
为窗口指定一个新名称,即打开(url,new_name,features)
解决方法可能是在您的MVC应用程序中创建一个IFRAME,并将URL传递回最终打开帐户表单的CRM表单。
使用Wscript.Shell ActiveX打开新的IE流程(最后的手段)。
此链接可能有所帮助 http://steveliles.github.io/cross_domain_inter_frame_communication_in_javascript.html
HTH