右键菜单
插件可以通过右键菜单访问。
创建右键菜单项
-
订阅 onContextMenuShow 事件,该事件在右键菜单显示时触发。
备注如果插件监听此事件,必须调用 AddContextMenuItem 方法(可以同步或异步调用),因为编辑器会等待所有插件的响应后再填充右键菜单。
参数:
名称 类型 描述 options ContextMenuOptions 定义所选右键菜单项的信息。 示例:
Asc.plugin.attachEvent("onContextMenuShow", (options) => {
const items = {
guid: window.Asc.plugin.guid,
items: [
{
id: "onNameClick",
text: "Name",
items: [],
},
],
};
this.executeMethod("AddContextMenuItem", [items]);
});ContextMenuOptions
定义右键菜单选项。
类型: object属性:
名称 类型 描述 Type ContextMenuType 上下文菜单类型。 header boolean指定是否在标题栏内打开上下文菜单。 footer boolean指定是否在页脚内打开上下文菜单。 headerArea boolean指定是否在标题上打开上下文菜单。 footerArea boolean指定是否在页脚上打开上下文菜单。 ContextMenuType
右键菜单类型:
- None — 未使用,
- Target — 无选中内容,
- Selection — 选中文本,
- Image — 选中图片,
- Shape — 选中形状,
- OleObject — 选中 OLE 对象。
根据选中类型,可以添加不同的右键菜单项。
类型: "None" | "Target" | "Selection" | "Image" | "Shape" | "OleObject" -
如有必要,使用 AddContextMenuItem 方法向右键菜单添加按钮。
参数:
名称 类型 描述 items Array.<ContextMenuItem>包含右键菜单项的数组。 返回值:此方法不返回任何数据。
ContextMenuItem
右键菜单项。
类型: object属性:
名称 类型 描述 id string项目 ID。 text string项目标题。 data string项目数据(该数据将发送到点击事件回调)。 disabled boolean指定当前项目是否被禁用。 icons string项目图标(参见插件 config 文档)。 items Array.<ContextMenuItem>包含当前项目的右键菜单项数组。 示例:
Asc.plugin.attachEvent("onContextMenuShow", (options) => {
const items = {
guid: window.Asc.plugin.guid,
items: [
{
id: "onNameClick",
text: "Name",
items: [],
},
],
};
this.executeMethod("AddContextMenuItem", [items]);
});
更新右键菜单项
要更新右键菜单项,请使用 UpdateContextMenuItem 方法。
参数:
| 名称 | 类型 | 描述 |
|---|---|---|
| items | Array.<ContextMenuItem> | 包含当前项目的右键菜单项数组。 |
返回值:此方法不返回任何数据。
示例:
Asc.plugin.attachEvent("onContextMenuShow", (options) => {
const items = {
guid: window.Asc.plugin.guid,
items: [
{
id: "onNameClick",
text: "New name",
items: [],
},
],
};
this.executeMethod("UpdateContextMenuItem", [items]);
});
点击右键菜单项
-
订阅 onContextMenuClick 事件,该事件在右键菜单按钮被点击时触发。
参数:
名称 类型 描述 id string项目 ID。 示例:
window.Asc.plugin.event_onContextMenuClick = (id) => {
const pluginObj = window.Asc.plugin;
const itemId = id;
const itemData = undefined;
const itemPos = itemId.indexOf("_oo_sep_");
if (itemPos !== -1) {
const itemData = itemId.slice(itemPos + 8);
const itemId = itemId.slice(0, itemPos);
}
if (pluginObj.contextMenuEvents && pluginObj.contextMenuEvents[itemId]) {
pluginObj.contextMenuEvents[itemId].call(pluginObj, itemData);
}
}; -
使用 attachContextMenuClickEvent 添加事件监听器,该函数会在右键菜单中指定按钮被点击并触发事件时调用。对于每个右键菜单按钮,可以通过其 ID 指定单独的事件监听器。
参数:
名称 类型 描述 id string事件名称。 action function事件监听函数。 返回值:此方法不返回任何数据。
示例:
Asc.plugin.attachContextMenuClickEvent("onNameClick", (data) => {
console.log(data);
});
例如,您可以创建自己的拼写检查器。在这种情况下,包含单词的右键菜单项将拥有相同的 ID 和相同的事件监听器。所需的单词则通过 attachContextMenuClickEvent 方法传递的数据来确定。