Microsoft Dynamics 365 的 JavaScript 库

 

发布日期: 2017年1月

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

JavaScript 库是 脚本 (JScript) Web 资源,其中包括可用于执行以下操作的函数:

  • 处理窗体和字段事件。

  • 执行功能区中配置的控件操作。

  • 支持其他函数。

使用 JScript 库

您可以像使用任何 Web 应用程序中的 JavaScript 库一样使用该 JavaScript 库。

将函数与窗体和字段事件关联起来

您最多可以关联 50 个脚本 Web 资源,这样它们就可以加载到一个实体窗体中。

将库添加到窗体之后,窗体中的所有事件都可以使用该库。 对于任何事件,您都可以决定使用哪个函数作为事件处理程序。 对于任何事件,您至多可以指定 50 个函数作为其事件处理程序。

在运行时关联函数

您可以在运行时使用 Xrm.Page.data.entity attribute.addOnChange 方法、Xrm.Page.data.entity.addOnSave 和查找控件 addPreSearch 方法向 OnChange 属性、窗体 OnSave 和查找控件 PreSearch事件中添加函数。 当使用这些方法时,函数会被添加到事件处理程序管道的底部,它们将收到执行上下文作为第一个参数。 您可以使用对应的 removeOnChange,removeOnSaveremovePreSearch 方法删除以此方式添加的函数。

执行上下文

每个事件处理程序都可以配置为接受执行上下文对象作为首个参数。 执行上下文包括可以调用来确定以下项的函数:

  • 深度:处理程序的相对执行顺序。

  • 事件源:启动事件的对象的引用。

    当您创建一个可能响应来自多个不同窗体或字段事件的事件时的函数时,此功能至关重要。

  • 共享变量:共享变量允许函数将变量设置为其他事件处理程序可以访问的键/值对。

详细信息:执行上下文(客户端引用)

在处理程序属性对话框中,您可以输入将要传递给函数的以逗号分隔的字符串值的列表。 这在允许更改函数行为而不需要更改代码时非常有用。

将函数与命令栏(功能区)命令相关联

命令栏或功能区中的每个控件都与包含 <Actions> (RibbonDiffXml) 元素(其中包含一个或多个操作)的 <CommandUIDefinition> (RibbonDiffXml) 关联。 <JavaScriptFunction> (RibbonDiffXml)就是可用操作之一。JavaScriptFunction 元素需要一个库引用和该库中的一个函数。

开发和测试脚本

您可以通过 Web 资源窗体或从配置窗体库和事件处理程序的“事件”选项卡中编辑脚本。

或者可以使用您喜欢的脚本编辑工具,并上载更改以更新您的脚本 Web 资源。 更改之后必须发布 Web 资源。

创建脚本库

设计了要在 JavaScript 库中使用的函数后,您的函数可能会和其他 JavaScript 库一起加载到窗体中。 如果其他库中包含的函数与您提供的函数具有相同的名称,则将为该页面定义最后加载的函数。 为了避免您的函数被其他库中的函数覆盖,您应该确保您的函数的名称是唯一的。

可以使用以下两种策略来帮助确保您的函数名称的唯一性:

  • 唯一的函数前缀
    如以下示例所示,使用带有一致性名称的标准语法定义每一个函数,该一致性名称符合唯一命名规则。

    function MyUniqueName_performMyAction()
    {
    // Code to perform your action.
    }
    
  • 已空间命名的库名称
    如以下示例所示,将您的每一个函数与一个 JavaScript 对象关联,从而创建一种命名空间以便在调用您的函数时使用。

    //If the MyUniqueName namespace object isn’t defined, create it.
    if (typeof (MyUniqueName) == "undefined")
     { MyUniqueName = {}; }
      // Create Namespace container for functions in this library;
      MyUniqueName.MyFunctions = {
       performMyAction: function(){
       // Code to perform your action.
       //Call another function in your library
       this.anotherAction();
      },
      anotherAction: function(){
       // Code in another function
      }
    };
    

    然后,当您使用您的函数时,您可以指定全名。 以下示例显示这种情况。

    MyUniqueName.MyFunctions.performMyAction();
    

    如果在其他函数中调用一个函数,您可以使用 this 关键字作为指向包含这两个函数的对象的快捷方式。 但是,如果您的函数正被用作事件处理程序,this 关键词是指正在发生事件的对象。

调试脚本

每个浏览器都具备自己的开发人员工具集。 以下说明使用 Internet Explorer 进行描述。

在 Microsoft Dynamics 365 窗口中调试脚本
  1. 按 F12 打开开发人员工具。

  2. 在“脚本”选项卡中“启动调试”按钮的右侧,使用下拉列表找到您的 JavaScript 库。

  3. 单击函数左侧的空白区域设置断点。

  4. 单击“启动调试”。

  5. 如果您的脚本位于 Onload 事件中,则必须选择 Microsoft Dynamics 365 窗口,并按 F5 重新加载窗口。

有关详细信息,请参阅使用开发人员工具调试脚本

另请参阅

通过 Microsoft Dynamics 365 使用 JavaScript
自定义 Microsoft Dynamics 365 应用程序
在客户端上扩展 Microsoft Dynamics 365
脚本 (JScript) Web 资源
为 Microsoft Dynamics 365 窗体编写代码
自定义实体窗体
定义功能区操作
示例:将文件作为 Web 资源导入
示例:Web 资源实用工具

Microsoft Dynamics 365

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