【问题记录】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);
        });
    },
    ...
});
相关推荐
竹林8181 小时前
在NFT项目中集成IPFS:从Pinata上传到前端展示的完整踩坑指南
前端·javascript
Hello--_--World1 小时前
ES15:Object.groupBy() 和 Map.groupBy()、Promise.withResolvers() 相关知识点
开发语言·前端·javascript
夜宵饽饽2 小时前
Agent文件系统检索核心:Grep和Glob工具
javascript·github
Cobyte3 小时前
6.响应式系统比对:通过 Vue3 响应式库写 React 应用
前端·javascript·vue.js
云浪3 小时前
从 0 到 1 搭建 RAG 应用:用 LangChain + Chroma + qwen-plus 实现《红楼梦》问答
javascript·vue.js·人工智能
xiaoxue..3 小时前
react:浅聊 vdom 与 diff 算法
前端·javascript·react.js·面试
止语Lab3 小时前
记忆溢出:当你的 Agent 记得太多时会发生什么
前端·javascript·vue.js
天天向上10243 小时前
vue openlayers地图加载大量点位时优化
前端·javascript·vue.js
devil-J3 小时前
vue3+three.js中国3D地图
开发语言·javascript·3d
这儿有一堆花13 小时前
前端三件套真的落后了吗?揭开现代 Web 开发的底层逻辑
前端·javascript·css·html5