【问题记录】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);
        });
    },
    ...
});
相关推荐
sudo_jin几秒前
从“谁调用指向谁”到“手写Bind源码”,彻底搞懂JavaScript的this机制
前端·javascript
cc_heart2 分钟前
antdv-next/x:面向 Vue 的 AI 组件体系
前端·javascript·vue.js
竹林8183 分钟前
RainbowKit快速集成多链钱包连接:从“一键连接”到“多链切换”的实战踩坑
前端·javascript
软弹7 分钟前
快速了解前端中的跨域问题
前端·javascript·vue.js·react.js·node.js·跨域
浩星24 分钟前
electron系列9:调用原生能力,剪贴板、通知、开机自启
前端·javascript·electron
han_1 小时前
JavaScript设计模式(十):模板方法模式实现与应用
前端·javascript·设计模式
二进制person1 小时前
JavaEE进阶 --HTML+CSS+JavaScript 基础
javascript·css·html
fīɡЙtīиɡ ℡1 小时前
【SpringAi最新版入门(二)】
java·javascript·css·人工智能·css3
西西学代码1 小时前
查找设备页面(amap_map)
开发语言·前端·javascript
浩星2 小时前
electron系列7之Electron + Vue 3:构建现代化桌面应用(上)
javascript·vue.js·electron