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

问题 #6422💬 已回答提出于 2025年2月27日作者 sumasal0 个反应

在开发分支中,当预览启用时,不应该允许拖动组件,但实际上是允许的。

快速解答作者 sumasal

给急躁者的临时变通办法:

阅读下方完整回答 ↓

问题

GrapesJS版本

  • 我确认使用最新版本的GrapesJS

你用的是什么浏览器?

截至2025年2月27日,Chrome 133 带开发分支

可复制演示链接

克隆开发仓库截至2025年2月27日

描述一下那个虫子

如何复现这个漏洞?

  1. ...克隆仓库,构建并开始
  2. ...在演示页面点击进入预览模式,尝试拖动组件。它是全编辑模式,画布会以半编辑模式运行,直到用预览按钮回收

预期的行为是什么? ...编辑模式下不应禁用拖曳或任何编辑功能

目前的行为是什么? ...

如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: “''js 你的代码在这里


### 行为准则

- [x] 我同意遵守本项目的行为准则

回答(2)

sumasal• 2025年3月22日

给急躁者的临时变通办法:

  editor.on('command:run:before:tlb-move', (command) => {
        command.options.abort = 编辑器。Commands.isActive('preview');
      });
GJS Helper• 2026年5月17日

看起来你发现了GrapesJS dev分支中的一个bug,即即使编辑器处于预览模式,组件拖拽仍然可能。这确实与预期行为相反,因为预览模式应禁用所有编辑操作,包括拖动、调整大小和选择组件,以提供真正的只读视图。 预期行为 当调用editor.setPreview(true)时,GrapesJS设计为切换为非交互模式。这通常包括: 隐藏编辑器面板和工具栏。 禁用组件选择和高亮功能。 防止所有组件的拖放操作。 禁用调整尺寸的把手。 根本原因(假说) 虽然editor.setPreview(true)内部调用editor.setDragMode(0)(将拖曳模式设置为“无”)来禁用拖拽,但在当前de...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

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

全部教程 →

浏览插件分类

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