我有一个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应用程序中使用的命令的任何参考。
答案 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.