1

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

在桌面上这很好用,它会启动一个新窗口,我可以做我需要做的事情,然后导航到 crm 中的新记录

Xrm.Utility.openEntityForm(entity, entityId);

然后关闭窗口

window.close();

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

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

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 应用程序中使用的命令的引用。

4

1 回答 1

0

此 Microsoft 文档站点包含有关移动设备的一些信息:

“此外,适用于手机的 Dynamics 365支持 Web 资源和 IFRAMES,因此这些控件的客户端 API 将不起作用。但适用于平板电脑的 Dynamics 365支持Web 资源和 IFRAMES 的客户端 API 。”

“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.
于 2018-08-24T22:59:04.003 回答