在动态365 CRM应用程序中导航

时间:2017-11-02 09:07:48

标签: javascript dynamics-crm dynamics-crm-2016 dynamics-365 dynamics365-app-mobile

我有一个Dynamics CRM 2016在线安装。我在此应用程序中创建了一个Web资源。此Web资源是从帐户列表中的按钮启动的。

在桌面上这完美无缺,它启动了一个新窗口,我可以做我需要的东西,然后导航到crm中的新记录

Xrm.Utility.openEntityForm(entity, entityId);

然后用

关闭窗口
window.close();

我也可以在(iOS)手机应用中访问此webbresource。但是,当资源加载时,上述两个命令都不起作用。

我无法使用以下任何命令从网络资源导航到记录:

Xrm.Utility.openEntityForm(entity, entityId); // throws undefined error
window.open(recordURL); // does nothing
window.location.href = recordURL; // does nothing

我无法用以下任何一种方式关闭网络资源:

window.close(); // does nothing
window.history.go(-1); // goes to a blank page (even more infuriating).

是否有一些特定的javascript命令用于这些事情(导航到记录,或返回)?我似乎无法找到我应该在Dynamics 365应用程序中使用的命令的任何参考。

1 个答案:

答案 0 :(得分:0)

This Microsoft documentation site包含一些有关移动设备的信息:

  

”此外,用于电话的Dynamics 365不支持网络   资源和IFRAMES,因此这些控件的客户端API不会   工作。 Web资源和IFRAMES的客户端API 受支持   不过,平板电脑使用的是Dynamics 365。”

     

“ Dynamics 365 移动客户端也不支持window.open   方法。如果您要为新的或   现有记录,请改用Xrm.Utility.openEntityForm。”

因此不支持窗口功能。 Xrm.Utility.openEntityForm()应该可以。可能由于移动设备上的互联网连接不正确,Web API请求未提供函数调用所需的Guid。

也许它也不受支持,但没有记录在案。至少有一个非常相似的功能Xrm.Utility.openWebResource()不支持作为状态:Xrm.Utility.openWebresource()

请记住,您必须使用parent.Xrm来访问以iframe形式嵌入在实体表单中的网页内部的Xrm对象。对于window.open()打开的网页也是如此。

万一它不起作用,您仍然可以执行某种条件行为或回退:

var isCrmForMobile = (Xrm.Page.context.client.getClient() == "Mobile")
if (isCrmForMobile)
{
   // Code for CRM for phones and tablets only goes here.
}
else
{
   // Code for web browser or CRM for Outlook only goes here.
}
if (Xrm.Page.context.client.getClient() == "Mobile" && Xrm.Page.context.client.getFormFactor() == 3)
{
   // Add code that should only run in CRM for phones here
}
// Code for any client goes here.