ONLYOFFICE 插件调试:实用指南

2025年11月20日作者:Krystal

ONLYOFFICE 插件的开发与调试工作可能存在一定难度,但只要掌握合适的工具与技巧,整个过程就会变得轻松许多。本指南将逐步介绍在不同环境中高效调试插件所需的具体方法。Debugging ONLYOFFICE Plugins: practical guide

关于 ONLYOFFICE 插件

ONLYOFFICE 支持通过插件扩展编辑器功能。插件本质上是嵌入编辑器中的 HTML 页面,并通过 API 与编辑器进行交互。理解插件的基本结构与调试方式,是成功进行插件开发的关键。

插件结构

一个典型的 ONLYOFFICE 插件通常包含以下文件:

  • config.json:定义插件基本信息的配置文件
  • index.html:插件的主页面文件
  • scripts:存放插件功能所需 JavaScript 文件的目录

关于详细结构和具体示例,可参考此处文档。

在网页编辑器中调试插件

若要在 ONLYOFFICE 在线编辑器中调试插件,请按以下步骤操作:

  • 在您的脚本中添加 debugger 命令
(function (window, undefined) {
    window.Asc.plugin.init = function () {
        this.callCommand(function () {
            debugger;
            let oDocument = Api.GetDocument();
            let oParagraph = Api.CreateParagraph();
            oParagraph.AddText("Hello from the plugin!");
            oDocument.InsertContent([oParagraph]);
        }, true);
    };
})(window, undefined);
  • 按下 F12 键在浏览器中打开开发者控制台
  • 在 ONLYOFFICE 编辑器中,转到插件选项卡并运行您的插件

注意:debugger 命令仅在开发者工具开启时才会生效;否则将被忽略。您可在此页面了解更多相关信息。

在桌面编辑器中调试插件

若要在 ONLYOFFICE 编辑器桌面版本中进行调试,请采用以下方法:

  • 使用 –ascdesktop-support-debug-info 参数启动编辑器

Debugging ONLYOFFICE Plugins: practical guide

  • 此参数将显示对调试有帮助的附加信息
  • 与网页编辑器类似,在代码中需要中断的位置插入 debugger; 语句
(function (window, undefined) {
    window.Asc.plugin.init = function () {
        this.callCommand(function () {
            debugger;
            let oDocument = Api.GetDocument();
            let oParagraph = Api.CreateParagraph();
            oParagraph.AddText("Hello from the plugin!");
            oDocument.InsertContent([oParagraph]);
        }, true);
    };
})(window, undefined);
  • 按下 F1 键打开控制台,随后运行插件。

在使用指定参数启动编辑器后,即可打开插件并跟踪代码执行过程。

Debugging ONLYOFFICE Plugins: practical guide

有关不同操作系统的详细说明,请参阅此处文档。

管理作用域

开发 ONLYOFFICE 插件时,关键在于掌握如何在插件的用户界面(HTML 页面)与执行文档编辑器 API 的运行环境之间进行数据传递。这两者分别处于不同的上下文环境中,即不同的作用域

常见错误通常源于未能正确处理不同作用域间的数据交互。为简化这一过程,ONLYOFFICE 提供了 Asc.scope 对象:您可以在插件的主脚本中将变量附加到 Asc.scope 上,这样在传递给 this.callCommand() 的函数中即可直接访问这些变量。

以下示例演示了如何将文本变量传递给插件及编辑器:

(function (window, undefined) {
    window.Asc.plugin.init = function () {
    // In your main script (e.g., scripts/plugin.js)
    let text = "Hello from the plugin!";
    Asc.scope.dataForEditor = text; // Export variable to the shared plugin scope
    // In the command executed in the editor's scope
    this.callCommand(function () {
         debugger;
         let oDocument = Api.GetDocument();
         let Paragraph = Api.CreateParagraph();
         oParagraph.AddText(Asc.scope.dataForEditor);// Access the variable via Asc.scope
         oDocument.InsertContent([oParagraph]);
    }, true);
  };
})(window, undefined);

正确使用 Asc.scope 能确保数据在不同上下文间准确传递,这对构建复杂插件至关重要。

常见问题及故障排除

调试过程中,您可能会遇到一些常见问题。以下列出了一些最常见问题及其解决方法:

调试器语句不起作用

debugger; 语句被忽略,程序无法暂停执行。

  • 运行插件前,请确保已打开浏览器的开发者工具(按 F12 键)。
  • debugger; 语句仅在开发者工具开启时生效。

插件无法加载或不可见

  • 检查 config.json 文件格式是否正确(是否为有效的 JSON)。
  • 确认 config.json 中包含所有必填字段(name、guid、baseUrl)。
  • 检查浏览器控制台是否有任何加载错误。
  • 确保插件已在 ONLYOFFICE 插件选项卡中正确安装。
  • 使用压缩的 .plugin 文件或 Asc.editor.installDeveloperPlugin() 方法手动安装。

跨域资源共享 (CORS) 错误

  • 安装 ONLYOFFICE 文档
  • 对于 ONLYOFFICE 文档中的网页编辑器,请确保在插件文件夹内运行 http-server
  • 或在 installDeveloperPlugin() 函数中调整 config.json 文件的路径
Asc.editor.installDeveloperPlugin("https://<documentserver>:<port>/<folder-name>/config.json")

Debugging ONLYOFFICE Plugins: practical guide Debugging ONLYOFFICE Plugins: practical guide

文件已更改,旧代码仍在运行 – 网页编辑器

  • 如果您更改了插件的本地文件,则需要刷新页面并清除缓存。
  • 右键单击​​浏览器的刷新按钮,选择“清空缓存并强制刷新”,然后再次运行插件。

Debugging ONLYOFFICE Plugins: practical guide

高效的调试对于开发稳定且功能完善的 ONLYOFFICE 插件至关重要。通过使用上述技巧和工具,您可以快速识别并解决代码中的问题,从而提升插件的质量和性能。

我们欢迎您的提问、建议和插件创意。如果您想与我们分享您的作品,请随时联系我们。我们乐于合作,并期待与您交流。

创建免费的 ONLYOFFICE 账户

在线查看并协作编辑文本文档、电子表格、幻灯片、表单和 PDF 文件。