编写和调试适用于手机和平板电脑的 Dynamics 365 的脚本

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

适用于手机的 Microsoft Dynamics 365 和 适用于平板电脑的 Microsoft Dynamics 365 使用的是 Web 应用程序中使用的相同窗体定义。 向 Web 应用程序中的窗体事件处理程序或功能区命令添加的任何 JavaScript 代码也可以在 Dynamics 365 移动客户端(手机和平板电脑)内运行。 需要注意一些不同点。

本主题内容

某些 Xrm.Page 或窗口对象函数在适用于手机和平板电脑的 Dynamics 365 中无效

指定哪些代码将在适用于手机和平板电脑的 Dynamics 365 中运行

指定哪些命令将在适用于手机和平板电脑的 Dynamics 365 中显示

请注意 Dynamics 365 移动客户端和浏览器中的 Web 应用程序之间的区别

调试适用于手机和平板电脑的 Dynamics 365 的脚本

某些 Xrm.Page 或窗口对象函数在适用于手机和平板电脑的 Dynamics 365 中无效

Dynamics 365 移动客户端不允许任何可能会妨碍脚本执行的函数。 通用 JavaScript 函数(例如 window.alertwindow.confirmwindow.prompt)将无法正常运行,或者生成错误。

使用 Xrm.UtilityalertDialogconfirmDialog 功能向用户显示消息。 这些函数与窗口函数运行方式不同,因为除非用户关闭它们,否则不会停止脚本处理。 它们提供回调函数以允许用户输入的异步响应。 使用 window.confirmwindow.prompt 或阻止脚本执行的其他本机窗口函数都将引发错误。

备注

如果要在窗体脚本中使用 window.alert,您设置的消息将在未指定回调函数的情况下被 Xrm.Utility.alertDialog 自动显示,但是,这只是临时的并且已经被弃用。 您应该将所有使用 window.alert 的代码移除,使用 Xrm.Utility.alertDialog 代码。

Dynamics 365 移动客户端也不支持 window.open 方法。 如果您想要为新记录或现有记录打开实体窗体,请使用 Xrm.Utility.openEntityForm

以下方法在 Dynamics 365 移动客户端(手机和平板电脑)中无效。

Xrm.Page.context.getCurrentTheme

Xrm.Page.ui视区方法

Xrm.Page.data.entity.getDataXml

Xrm.Page.ui.navigation.items 集合

Xrm.Page.ui.窗体选择器 对象方法

Xrm.Page.ui tab.setDisplayState

这些函数大多数会执行空函数,并且不返回任何值。 如果您有需要从这些函数之一返回值的代码,该代码将不被定义。

此外,适用于手机的 Dynamics 365 不支持 Web 资源和 IFRAME,因此这些控件的客户端 API 将不工作。 尽管 适用于平板电脑的 Dynamics 365 中支持 Web 资源和 IFRAME 的客户端 API。 详细信息:Web 资源和 IFRAME 控件方法

指定哪些代码将在适用于手机和平板电脑的 Dynamics 365 中运行

当客户端 API 的功能不同时,应该将与下列代码类似的代码包含在其中,用以分隔为每个客户端应用的逻辑。

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.
}
// Code for any client goes here.

指定哪些命令将在适用于手机和平板电脑的 Dynamics 365 中显示

当您在自定义命令栏(功能区)命令中使用 <JavaScriptFunction> (RibbonDiffXml) 操作时,您还可以使用 Xrm.Page.context.client.getClient 来分隔代码。 如果在使用 Dynamics 365 移动客户端时要执行的操作无效,则应该包括显示规则,以保证 适用于平板电脑的 Dynamics 365 中不会显示这些命令。 默认情况下,除非明确配置为不显示,否则定义的所有命令都会在 Dynamics 365 移动客户端中显示。 一般说来,除非您知道命令在使用 Dynamics 365 移动客户端时有效,否则应该定义以下显示规则,并将其加入每个命令中。

<DisplayRule Id="My.HideOnModern">
 <CommandClientTypeRule Type="Modern"
                        InvertResult="true" />
</DisplayRule>

请注意 Dynamics 365 移动客户端和浏览器中的 Web 应用程序之间的区别

您应该知道,除了 某些 Xrm.Page 或窗口对象函数在适用于手机和平板电脑的 Dynamics 365 中无效 中描述的功能外还存在其他的不同点。

  • 复合字段
    Dynamics 365 移动客户端以不同方式实现复合字段。Dynamics 365 移动客户端中不包含复合属性。 它们会自动替代构成属性并改为显示这些属性。详细信息:为复合属性编写脚本

调试适用于手机和平板电脑的 Dynamics 365 的脚本

由于 适用于手机的 Dynamics 365 或 适用于平板电脑的 Dynamics 365 是应用程序,所以在浏览器中可以使用的普通 JavaScript 调试工具将不可用。 建议您采用下列过程测试和调试您自己的窗体脚本和功能区命令:

  1. 使用 web 应用程序测试整个脚本。

  2. 作为使用 Web 浏览器测试的一部分,请在使用 Xrm.Page.context.client.getClient 检查客户端的时候撤销标准,并验证该逻辑是否合适人们使用 Dynamics 365 移动客户端时的经验。 用于 Dynamics 365 移动客户端的 API 是可用于 Web 浏览器的 API 的子集,因此应该可以在 Web 浏览器中测试特定的流程。

  3. 如果可以,请在安装了 Windows 10 和 Microsoft Visual Studio 的计算机上安装 Dynamics 365 移动客户端。 如果您想使用 Visual Studio 启用调试程序,请包括 调试程序 语句。

  4. 最后,请使用 Xrm.Utility.alertDialog 在 Dynamics 365 移动客户端内显示代码的值。

另请参阅

为 Microsoft Dynamics 365 窗体编写代码
使用窗体和字段事件
使用 Xrm.Page 对象模型
为复合属性编写脚本
脚本即时引用的表单
客户端编程引用
命令栏或功能区演示

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权