使用 Oracle APEX 内置的 TinyMCE 编辑器时,开发人员希望能够在 Interactive Grid 的特定列中加入个性化的工具栏按钮。虽然在标准表单元素中,可以通过 Initialization JavaScript Function 进行此类定制,如示例代码所示:
function(options){
options.editorOptions.toolbar = "styles bold italic underline link bullist numlist indent outdent undo redo";
return options;
}
但是,当试图将上述 JavaScript 代码应用于 Interactive Grid 的富文本列时,发现自定义的工具栏设置未被采纳,编辑器依然展示默认的按钮集,且不会产生任何错误提示。即使尝试在 Interactive Grid 的 Initialization JavaScript Function 中加入相同的代码,也未能解决问题。
原因分析
原因在于 Oracle APEX 的初始化流程。在处理 Interactive Grid 时,APEX 使用 staticId 而非 elementId 来调用富文本编辑器的初始化函数。若未明确设定列的 staticId,系统会自动将其设为 “C” 加上内部 ID 的形式。因此,在初始化过程中,由于标识符的不匹配,APEX 无法正确加载自定义的配置。
解决办法
方法一:手动指定 staticId
- 步骤1:在 Interactive Grid 列的 Initialization JavaScript Function 中编写自定义的初始化代码,并保存页面。
- 步骤2:在浏览器中打开页面,利用“查看页面源代码”功能寻找如下格式的代码段:
apex.WebComponent._registerInitFunc({
elementId: "1234567890123456",
func: function(options){
options.editorOptions.toolbar = "styles bold italic underline link bullist numlist indent outdent";
return options;
}
});
- 步骤3:记录下
elementId
的确切值(例如 1234567890123456)。 - 步骤4:回到 APEX 开发环境,将该列的 staticId 设定为前一步获取的
elementId
。 - 步骤5:保存更改后重新加载页面,检查工具栏是否按预期显示。
方法二:遵循默认的 staticId 格式
若不想手动指定 staticId,可选择遵照 APEX 默认的命名规则。通常,staticId 会被设置为 “C” 后跟 elementId
。比如,若 elementId
是 1234567890123456,则应将 staticId 设定为 C1234567890123456。
总结
在 Oracle APEX 的 Interactive Grid 中实现富文本编辑器工具栏的个性化,关键在于确保初始化函数的正确引用。