Javascript 来自外部iframe CRM 2013的期初实体
我们有一个CRM 2011解决方案,其中包含几个自定义的基于ASP.NET MVC的视图和表单,这些视图和表单显示在CRM中实体的iFrame中。目前,我们正在对升级到CRM 2013进行一些分析,我们在打开实体窗口时遇到了问题 我们在整个解决方案中主要使用了Javascript 来自外部iframe CRM 2013的期初实体,javascript,dynamics-crm-2011,dynamics-crm-2013,Javascript,Dynamics Crm 2011,Dynamics Crm 2013,我们有一个CRM 2011解决方案,其中包含几个自定义的基于ASP.NET MVC的视图和表单,这些视图和表单显示在CRM中实体的iFrame中。目前,我们正在对升级到CRM 2013进行一些分析,我们在打开实体窗口时遇到了问题 我们在整个解决方案中主要使用了window.open,包括CRM端的Java脚本和自定义ASP.NET MVC应用程序。传递到window.open的URL格式如下: http://crm.contoso.com/Contoso-Org/main.aspx?etn=op
window.open
,包括CRM端的Java脚本和自定义ASP.NET MVC应用程序。传递到window.open
的URL格式如下:
http://crm.contoso.com/Contoso-Org/main.aspx?etn=opportunity&pagetype=entityrecord&id={...}
问题在于,它似乎记住了在CRM 2013中打开时的上下文,所以它只是重新打开了从中打开的实体。我们在CRM端通过使用Xrm.Utility.openEntityForm
解决了这个问题,但是对于定制应用程序来说,这似乎是不可能的,因为我们无法从iframe内部访问Xrm库。URL是正确的,如果它是复制粘贴到新选项卡中的,它将正确加载所需的实体。当加载窗口时,打开只会重新打开同一实体
一些建议指出,在打开的URL中添加一个由随机生成的数字组成的histKey
参数。但是,这并不一致——有时它会打开正确的实体,有时它只会重新打开当前实体——也没有正式的文档记录
有人找到了解决方案吗?请尝试以下方法:
将A标记目标更改为_空白
给窗口一个新名称,即打开(url、新名称、功能)
一种解决方法可能是在MVC应用程序中创建一个IFRAME,并将URL传递回CRM表单,最终打开帐户表单
使用Wscript.Shell ActiveX打开新的IE进程(万不得已)
这个链接可能会有所帮助
嗯
我在打开CRM 2013 URL时遇到了类似的问题,通过向URL添加两个查询字符串histKey(以随机数为值)和newWindow来解决问题,如下所示:
“histKey=“+Math.floor(Math.random()*10000)
“newWindow=true”
希望这能有所帮助。你的问题让我有点困惑。听起来您已经解决了从CRM中加载的问题,但是从MVC中,它不起作用了?如果您正在从外部应用程序打开一个新窗口,“同一实体”是什么?假设我正在查看商机记录。在这里,我们有一个iframe来显示我们的MVC应用程序。MVC应用程序包含一个
,该应用程序应开立与Opportunity相关的帐户。etn
参数设置为account
,GUID指向account实体。但是,当单击URL时,它只会打开与从中打开的相同的Opportunity。因此,它不知何故“记住”了它来自的上下文,即使它是在新选项卡中打开的。CRM似乎附加了一个相同的哈希代码,因此可能存在一些内部状态。