#67072026年2月13日作者 saeedhbi1 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome(版本142-144)、Safari(版本16.3、26.1),可能还有其他版本 可复制演示链接 https://jsfiddle.net/saeedhbi/tqfe7p04/ 描述一下那个虫子 如何复现这个漏洞? 初始化 GrapesJS 编辑器(v0.22.11 或 v0.22.14) 在iframe完全加载前,按下键盘快捷键(例如Ctrl+Z、Delete或任意命令键) 命令系统在 iframe 准备好前调用 'Canvas.hasFocus()' 观察“类型错误:无法读取空属性(读取”hasFocus“)” 预期的行为是什...
GJS Helper
GrapesJS Canvas模块中的TypeError: Cannot read properties of null (reading 'hasFocus')是已知的问题,源于竞争条件。当键盘命令(如Ctrl+Z、删除)在编辑器的iframe文档完全加载前或被销毁/卸载后尝试调用editor.Canvas.hasFocus()时,就会出现这种情况。 根本原因 Canvas.hasFocus()方法内部调用this.getDocument().hasFocus()。thi...
#67052026年2月13日作者 saeedhbi3 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 所有浏览器(Chrome、Safari、Firefox、Edge) 可复制演示链接 https://jsfiddle.net/saeedhbi/tdsLa6qe/ 描述一下那个虫子 如何复现这个漏洞? 创建一个基础的GrapesJS编辑器(版本0.22.11或0.22.14) 向画布添加输入字段组件 聚焦输入场 发送一个键盘事件,其中“event.key”为“未定义”,用于IME作曲事件(主要是中文/日文/韩文键盘) 观察“类型错误:无法读取控制台中未定义属性(读为”toLowerCase“)” 预期的行为是什么? 键盘处理器应优雅地处理“e...
saeedhbi
你好@artf,在深入挖掘全栈跟踪后,我发现错误不在 GrapesJS 里。 “event.key.toLowerCase()”调用来自我们自己的应用代码——一个全局代码 'window.addEventListener(“keydown”, ...)我们在代码库中其他地方有处理程序, 与GrapesJS并行运行。因为我们的webpack构建将多个模块捆绑成同一个块 ('dist/1348'),哨兵框架具有误导性,我们错误地将来源归于GrapesJS。 GrapesJS 自...
artf
嘿,@saeedhbi,你在我们的代码里到底在哪里看到“event.key.toLowerCase()”?你确定不是你这边的吗? 可惜jsfiddle帮不上忙,感觉AI太粗糙😅,甚至连编辑器都加载不了。 也许你可以分享全栈的跟踪,看看具体发生在哪里?
GJS Helper
GrapesJS的键盘处理器中的TypeError: Cannot read properties of undefined (reading 'toLowerCase')是一个已知问题,当某些键盘事件,尤其是用于中文、日语或韩语等语言的输入法编辑器(IME)中,从GrapesJS画布的输入字段中发出时就会出现。根本原因是在 IME 组合过程中,event.key属性可以在提交字符前被合法地为keydown事件而undefined。GrapesJS的内部Keymaps模块试...
#66952026年2月2日作者 Axel3031 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Edge 144.0.3719.92 可复制演示链接 https://jsfiddle.net/L61f0qtz/ 描述一下那个虫子 如何复现这个漏洞? 在 Microsoft Edge 中打开 GrapesJS 编辑器。 添加一个键位图,用于使用 Ctrl+S 或 Ctrl+Shift+S 保存,并使用 { prevent: true }。 专注于编辑器画布(或编辑器内的任何位置)。 按下快捷键(Ctrl+S 或 Ctrl+Shift+S)。 预期的行为是什么? GrapesJS 命令console.log(“保存”)应执行。 浏览器不应打...
GJS Helper
你遇到的 preventDefault() 在 Edge 中 Ctrl+S 和 Ctrl+Shift+MicrosoftS 无法正常工作,当GrapesJS画布聚焦时,这个问题与浏览器如何处理键盘事件和系统级快捷方式有关,这是常见的挑战。虽然 GrapesJS的 Keymaps 模块设计上防止默认操作,但其默认设置并未完全考虑画布 iframe 内的事件隔离。 根本原因 Iframe 事件隔离: GrapesJS 在一个iframe中渲染其可编辑画布内容。当你专注于画布并按...
#65912025年8月20日作者 CES-TechAdmin2 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Mac 版 Safari 18.5 可复制演示链接 https://codepen.io/jmulik/pen/LEpdjZq 描述一下那个虫子 如何复现这个漏洞? 在Chrome中查看 https://codepen.io/jmulik/pen/LEpdjZq - 支持拖放方块。 在Safari中查看。- 无法放置和放下方块。 预期的行为是什么? 变装和变装在Safari里应该能行。就像Chrome一样。 目前的行为是什么? 在Safari中,方块的拖放功能不起作用。 观察 Safari 中的拖拽功能在 GrapesJS v0.21.13...
them7d
是的,它不能用,因为代码和Safari浏览器不完全兼容 要解决这个问题,你需要在NextJS中使用 grapes ,比如这个页面 https://grapesjs.com/demo.html
GJS Helper
你遇到的拖放功能自 v0.22.1 以来在 Safari 中无法正常工作GrapesJS是与框架存储管理变更相关的已知行为。 根本原因 GrapesJS v0.22.0 对其storageManager进行了重大更新,indexedDB成为默认存储驱动,以提升性能和容量。虽然 indexedDB 整体上很稳健,但 Safari,尤其是在某些情境下,比如 iframes(如你的 Codepen 演示所示)或启用了“防止跨站追踪”等隐私设置时,可能会有更严格的政策或针对inde...
#65832025年8月5日作者 msftedad2 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Edge 版本 135.0.2535.51(官方构建)(64 位),Chrome 版本 135.0.6422.112(官方构建)(64 位) 可复制演示链接 https://grapesjs.com/demo 描述一下那个虫子 测试环境: 操作系统:Windows 11[版本24H2(操作系统构建版24631.3593)] Edge:版本 135.0.2535.51(官方版本)(64 位) Chrome:版本 135.0.6422.112(官方构建)(64位) 屏幕阅读器:NVDA(2024.4.2) 测试网址:https://grapesj...
artf
嘿,@msftedad网站仓库在[这里](https://github.com/GrapesJS/website),欢迎提交修复后的永久注册([file](https://github.com/GrapesJS/website/blob/main/src/app/(demos)/GrapesEditor.tsx))。我决定关闭这个问题,因为它和核心无关。
GJS Helper
这是一份有效且重要的无障碍漏洞报告,适用于GrapesJS演示页面。问题源于GrapesJS标志的<img>标签中alt属性为空,错误地向屏幕阅读器传达该图像纯属装饰性。对于同时作为首页链接的标志来说,这是一个有意义的元素,需要描述性替代文本。 根本原因 虽然alt属性存在于演示页面GrapesJS标志的HTML中,但它被设置为空字符串(alt="")。根据网页内容无障碍指南(WCAG),空alt属性应仅用于纯装饰性且不传递信息的图片。在这种情况下,GrapesJS标志是一...
#65822025年8月5日作者 msftedad2 个回答
GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Edge:版本 135.0.2535.51(官方构建)(64 位),Chrome 版本:版本 135.0.6422.112(官方构建)(64 位) 可复制演示链接 https://app.grapesjs.com/studio?utmsource=grapesjs&utmmedium=mainTopNav 描述一下那个虫子 测试环境: 操作系统:Windows 11[版本24H2(操作系统构建版24631.3593)] Edge:版本 135.0.2535.51(官方版本)(64 位) Chrome:版本 135.0.6422.112(官方构...
GJS Helper
你提到的问题凸显了大量依赖拖拽交互的网页构建者常见的无障碍挑战。 GrapesJS默认主要通过鼠标/触摸拖放手势实现块和组件操作,这些操作本身无法通过键盘导航或单指针模式访问,而某些无障碍标准(如 WCAG 2.1 成功标准 2.5.1 指针手势,暗示了路径手势的替代方案)。你看到的“拖放控制”是为鼠标操作设计的,而非键盘激活。 根本原因 GrapesJS 块管理器和添加新组件的画布交互基于指针设备(鼠标、触摸)的直接操作范式构建。没有内置机制仅通过键盘输入从块面板启动“拖...
#63452024年12月6日作者 VanTranTrucPhuong2 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Chrome 版本 131.0.6778.109(官方构建)(64 位) 可复制演示链接 https://grapesjs.com/demo-newsletter-editor 描述一下那个虫子 如何复现这个漏洞?将鼠标指针放在你想选择文本的起始位置。按住SHIFT键。将鼠标指针移动到文本选择的目标端点。 预期的行为是什么? 所选文本应自动带有高亮背景,表示已被选中。 目前的行为是什么? 所选文本没有高亮的背景。 行为准则 [X] 我同意遵守本项目的行为准则
sirbeagle
我认为我查明原因在于无法同时选择多个方块。评论 “''t” this.clearSelection(this.Canvas.getWindow()); ``` 在 [/src/editor/model/Editor.ts](https://github.com/GrapesJS/grapesjs/blob/46b3292a9682f77076ddebe6015cfa247a55a844/packages/core/src/editor/model/Editor.ts#L53...
GJS Helper
你遇到了一个常见问题:GrapesJS富文本编辑器(RTE)中的文本选择不会直观高亮所选文本,尽管选择本身是可行的(例如,你可以复制文本)。这种行为在官方演示中是可复现的,并表示存在样式冲突。 根本原因 该错误的根本原因通常与CSS有关。浏览器使用::selection伪元素来为所选文本进行样式化(例如应用蓝色背景)。在像网页构建器这样带有富文本编辑器(GrapesJS使用 ProseMirror 作为 RTE)的复杂环境中,自定义 CSS、全局重置或特定编辑器配置可能会无...
#58912024年5月17日作者 shapley2 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? Firefox 125.0.3,Brave 1.66.110 可复制演示链接 https://jsfiddle.net/szLp8h4n 描述一下那个虫子 按照“git”指令在终端执行“yarn start”时安装 Grapesjs : ~$ sudo apt install Nodejs NPM ~$ sudo apt install curl gnupg -y ~$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg |sudo apt-key add - 回声“Deb https://d...
artf
谢谢@shapley,这其实和GrapesJS甚至Yarn没什么关系,你得[增加文件系统监视者](https://stackoverflow.com/a/65347277)。
GJS Helper
你遇到的ENOSPC: System limit for number of file watchers reached错误是Linux系统(包括Ubuntu 24.04 LTS)在处理包含大量文件的大型项目时常见的问题,比如带有nodemodules目录的GrapesJS仓库。这不是GrapesJS或Yarn特有的bug,而是操作系统的限制。 根本原因: 你的操作系统对inotify子系统可以监控的文件和目录数量有默认限制。开发工具如Webpack、Sass和chokid...
#53252023年8月21日作者 bohwaz1 个回答
GrapesJS 版本 [X] 我确认使用最新版本 GrapesJS 你用的是什么浏览器? 维瓦尔第 可复制演示链接 https://grapesjs.com/demo.html 描述一下那个虫子 如何复现这个漏洞?执行动作后按Ctrl+Z,以撤销动作被反转,但我的浏览器也会重新打开最后关闭的标签页 预期的行为是什么? 阻止浏览器执行默认的按键绑定。 目前的行为是什么? Ctrl+Z 事件传播在 JS 中不会被停止,因此浏览器仍然执行指定的快捷键。 行为准则 [X] 我同意遵守本项目的行为准则
GJS Helper
你遇到的 Ctrl+Z 同时触发撤销和浏览器“重新打开最后关闭标签页”快捷方式GrapesJS问题,是因为 Ctrl+Z 的keydown事件在 GrapesJS内没有被阻止默认操作。虽然 GrapesJS 内部处理撤销命令,但事件可以被加载到浏览器,浏览器会执行自己的默认快捷方式。 要解决这个问题,你需要明确阻止GrapesJS激活时Ctrl+Z键组合的默认浏览器操作。实现这一点最有力的方法是利用GrapesJS的Keymaps API覆盖或增强默认undo键映射行为。...
#52972023年8月10日作者 FahemAhmad2 个回答
GrapesJS 版本[X] 我确认使用最新版本 GrapesJS你用的是什么浏览器? 版本 115.0.5790.171(官方构建)(64位)可复制演示链接 https://codesandbox.io/s/1r0w2pk1vl?file=/index.html描述一下那个虫子 如何复现这个漏洞?...添加此表单类型和表单块 预期的行为是什么? ...在 getJS 中,我希望编辑器中有相关的 js 代码,我不确定我的期望是否正确,如果不正确,请告诉我该如何实现 目前的行为是什么? ...getJS({component}) 返回空字符串 '' 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: @ar 行为准则[X] 我同意...
artf
'getJs' 返回的是你组件模型的 JS(你会放在 'model.defaults.script' 里的那个),而不是组件视图。 请仔细阅读 [组件与JS](https://grapesjs.com/docs/modules/Components-js.html)
GJS Helper
你遇到的问题是,尽管自定义表单组件的view.events里定义了submit事件处理程序,editor.getJs({ component })却返回空字符串,这是预期行为,而不是GrapesJS中的bug。 根本原因 GrapesJS的getJs方法旨在提取 JavaScript 代码,这些代码旨在独立于 GrapesJS 编辑器运行于导出页面。然而,组件view.events对象中定义的事件处理程序主要用于使组件在 GrapesJS 编辑器的 iframe 上下文中保...