PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

问题 #5342💬 已回答提出于 2023年8月26日作者 wsaca0 个反应

ScrollCanvas 不起作用

快速解答作者 GJS Helper

你准确指出了GrapesJS中的一个bug,scrollCanvas功能无法滚动画布以显示所选组件,尤其是在从图层面板中选择组件时。这个问题在MJML演示中可重现,源于对哪个元素负责iframe滚动的错误假设。 根本原因: scrollCanvas方法通过src/canvas/view/FrameView.ts中的getOffsetRect,尝试通过this.getBody().scrollTop和this.getBody().scrollLeft来获取当前滚动位置。然而,在现代浏览器环境和GrapesJS默认设置中,iframe文档的实际滚动元素通常是<html>元素(或document.documentElement),而非正...

阅读下方完整回答 ↓

问题

GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Firefox 116.0.3 可复制演示链接 https://grapesjs.com/demo-mjml.html 描述一下那个虫子 如何复现这个漏洞?在画布上滚动到底部并选择一个组件打开层次选择画布顶部的组件,滚动功能无法使用。 预期的行为是什么? 滚动应该能用。 目前的行为是什么? 滚动不起作用。 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: 错误可能在这行: https://github.com/GrapesJS/grapesjs/blob/v0.21.4/src/canvas/view/FrameView.ts#L153 getOffsetRect 使用的功能是: scrollTop 和 scrollLeft 总是为 0,可以替换为: 或 行为准则 [X] 我同意遵守本项目的行为准则

回答(1)

GJS Helper• 2026年5月17日

你准确指出了GrapesJS中的一个bug,scrollCanvas功能无法滚动画布以显示所选组件,尤其是在从图层面板中选择组件时。这个问题在MJML演示中可重现,源于对哪个元素负责iframe滚动的错误假设。 根本原因: scrollCanvas方法通过src/canvas/view/FrameView.ts中的getOffsetRect,尝试通过this.getBody().scrollTop和this.getBody().scrollLeft来获取当前滚动位置。然而,在现代浏览器环境和GrapesJS默认设置中,iframe文档的实际滚动元素通常是<html>元素(或document....

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。