【问题记录】tinyMCE工具栏弹窗滚动页面定位不正确问题处理

问题

遇到一个dialog弹窗中tinyMCE富文本组件的操作栏在页面滚动时的展示问题。操作栏弹窗位置没有跟随富文本组件进行跟随滚动,而是固定不动,展示存在问题。

排查

tinyMCE在项目不是第一次使用。比较了正常展示的页面后,发现了两者的差异,正常的是在主页面中进行使用,现在发现问题的是在dialog弹窗中。 对页面元素进行检查发现,承载操作栏的div父节点都是挂载在html.body下面:

发现问题,当在dialog中使用tinyMCE时,操作栏在做绝对定位,是在相对html.body下的父级元素做定位,导致在dialog中滚动时无法做到准确的位置计算。

解决

在编辑器初始化完成后将操作栏父级节点从html.body移至与编辑器同级节点

js 复制代码
tinyMCE.init({
    ...,
    setup: function(editor) {
        editor.on('init', function() {
            const container = editor.getContainer();
            const toxContainer = document.querySelector('body > .tox.tox-tinymce-aux');
            container.parentNode.appendChild(toxContainer);
        });
    },
    ...
});
相关推荐
西洼工作室5 分钟前
React TabBar切换与高亮实现
前端·javascript·react.js
wuhen_n14 分钟前
Tool Schema 设计模式详解
前端·javascript·ai编程
wuhen_n17 分钟前
排列算法完全指南 - 从全排列到N皇后,一套模板搞定所有排列问题
前端·javascript·算法
@大迁世界17 分钟前
15.React 中的 Fragment 是什么?它出现的动机是什么?
前端·javascript·react.js·前端框架·ecmascript
Embrace92426 分钟前
钉钉工作台内嵌应用=》调用钉钉对话框
前端·javascript·钉钉
周不凢33 分钟前
elementui 表格行选择:通过 toggleRowSelection 方法控制表格行的选中状态
前端·javascript·elementui
云浪38 分钟前
认识 Service Worker
前端·javascript
方也_arkling41 分钟前
【Vue-Day11】props的使用
前端·javascript·vue.js
FlyWIHTSKY1 小时前
Vue3 插槽(Slot)使用
前端·javascript·vue.js
ZTLJQ1 小时前
构建网页的三剑客:HTML, CSS, JavaScript 完全解析
javascript·css·html