You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Confluence用户宏批量完成页面内联任务?

解决Confluence内联任务一键标记完成的用户宏问题

你的代码模拟点击无效,核心原因是Confluence内联任务的状态变更依赖内部封装的事件逻辑或API,单纯触发click事件无法触发完整的状态同步流程(包括后端数据更新和前端样式切换)。以下是两种可行的解决方案:

方案一:调用Confluence内部API(推荐)

直接使用Confluence官方提供的AJS.InlineTasks工具类来完成任务,确保前端状态和后端数据同步:

## Macro title: Check All Tasks
## Macro has a body: N
## Date created: 2022-07-08
## Installed by: R.
## @noparams

<a id="toggleAll" href="#">Check all tasks</a>
<script type="text/javascript">
AJS.toInit(function () {
    AJS.$('#toggleAll').click(function(e) {
        // 阻止默认跳转行为
        e.preventDefault();
        
        // 遍历所有内联任务列表
        AJS.$('.inline-task-list').each(function() {
            var contentId = AJS.$(this).data('inline-tasks-content-id');
            // 筛选未完成的任务
            var $unfinishedTasks = AJS.$(this).find('li[role="checkbox"][aria-checked="false"]');
            
            $unfinishedTasks.each(function() {
                var taskId = AJS.$(this).data('inline-task-id');
                // 调用Confluence内部API标记任务完成
                if (AJS.InlineTasks && typeof AJS.InlineTasks.toggleTask === 'function') {
                    AJS.InlineTasks.toggleTask(contentId, taskId, true);
                }
            });
        });
    });
});
</script>

方案二:模拟完整交互(降级方案)

如果Confluence版本不支持AJS.InlineTasks API,可以通过模拟完整的鼠标交互事件,同时手动更新前端状态:

## Macro title: Check All Tasks
## Macro has a body: N
## Date created: 2022-07-08
## Installed by: R.
## @noparams

<a id="toggleAll" href="#">Check all tasks</a>
<script type="text/javascript">
AJS.toInit(function () {
    AJS.$('#toggleAll').click(function(e) {
        e.preventDefault();
        
        AJS.$('li[role="checkbox"][aria-checked="false"]').each(function() {
            var $task = AJS.$(this);
            // 模拟完整的鼠标交互序列
            $task.trigger('mousedown').trigger('mouseup');
            // 更新ARIA属性和完成状态类
            $task.attr('aria-checked', 'true');
            $task.addClass('inline-task-checked');
        });
    });
});
</script>

关键说明

  • Confluence内联任务的完成状态由aria-checked="true"和inline-task-checked类共同控制,后者会替换未完成状态的背景图
  • 方案一优先使用官方API,能确保任务状态同步到Confluence后端,刷新页面后不会丢失;方案二仅更新前端状态,刷新后会还原
  • 代码中使用AJS.$而非原生jQuery或document,是为了兼容Confluence的内部JS环境

内容的提问来源于stack exchange,提问作者Raphael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:03:21