Confluence Data Center用户宏异常:页面内容被渲染至宏DOM内
修复Confluence嵌套Expand用户宏的内容嵌套问题
核心问题原因
你遇到的问题本质是Confluence宏渲染逻辑导致的:如果用户宏的Body Type未正确设置,或者宏输出的DOM结构存在未闭合标签,编辑器会错误将宏之后的页面内容识别为宏的一部分,渲染到宏的DOM内部;再加上绝对定位让元素脱离文档流,进一步加剧了结构混淆。
具体修复步骤
1. 修正用户宏的Body Type设置
这是最关键的一步:
- 进入Confluence「用户宏管理」页面,找到你的自定义宏
- 编辑宏定义,在「Body Type」下拉菜单中选择None
- 保存宏设置,彻底切断宏与后续内容的关联,避免Confluence将宏后的内容当作宏的body处理
2. 确保宏输出的DOM结构完全闭合
检查宏代码,确保所有HTML标签和嵌套的Confluence宏标签都正确闭合,示例代码如下:
<div style="position: absolute; top: 16px; right: 16px; z-index: 999; background: #fff; border: 1px solid #ccc; padding: 8px;"> <ac:structured-macro ac:name="expand"> <ac:parameter ac:name="title">我的折叠面板</ac:parameter> <ac:rich-text-body> 这里是折叠面板的内容 </ac:rich-text-body> </ac:structured-macro> </div> <!-- 添加空块级元素明确分隔后续内容 --> <div style="display: block; height: 0; width: 100%;"></div>
3. 排查Velocity模板逻辑错误(如果使用了Velocity)
如果宏是用Velocity编写的,检查是否有条件分支(如#if/#else)导致标签未闭合的情况——比如某分支里打开了div但未在对应分支闭合,会让Confluence渲染引擎错误地将后续内容补到未闭合标签内。
验证修复
修改后,编辑页面插入宏并添加后续文本内容,切换到预览模式或发布页面,确认内容是否独立显示在宏下方,而非嵌套到宏的DOM元素内部。
内容的提问来源于stack exchange,提问作者emotionalDamage
相关产品推荐
相关产品推荐

