无法基于文本组件为扩展按钮组件添加空格。
看起来空格会触发 Chrome 中的“点击”事件。解决办法似乎是在“keypress”时添加 preventDefault https://stackoverflow.com/questions/22104860/chrome-firing-onclick-when-space-typed-in-contenteditable-button 附言:避免那样扩大视野。默认情况下,当你使用某种类型的“extend”时,它也在扩展视图(如果你需要扩展另一个组件的视图,可以用“extendView: 'another-component-type')。
阅读下方完整回答 ↓问题
大家好, 首先,我想表达对这个惊人工具的感激之情。我基于文本组件做了扩展按钮组件,这样可以手动编辑按钮内容,而不使用特质。 扩展按钮组件的代码如下: var comps = 编辑器。主导组件; var defaultType4 = comps.getType('text'); 编辑。DomComponents.addType('button', { 模型:{ 默认值:{ 标签名称:“button”, 类:['.pointer'],//悬停时添加点击指针, }, }, 扩展:“文本”, isComponent: 函数 (el) { 如果 (el.tagName === 'BUTTON') 返回 {type: 'button'}; }, view: defaultType4.view.extend({ 事件:{ dblclick:“onActive”, 输入: 'onInput', 拖开:“handleDragStart”, 点击:函数(function() { /点击功能 / } }, }) }) 现在我已经能手动编辑按钮组件的内容了。现在我遇到的问题是,我无法在按钮的内容内添加空格字符。有人能帮帮我吗?
回答(2)
看起来空格会触发 Chrome 中的“点击”事件。解决办法似乎是在“keypress”时添加 preventDefault https://stackoverflow.com/questions/22104860/chrome-firing-onclick-when-space-typed-in-contenteditable-button
附言:避免那样扩大视野。默认情况下,当你使用某种类型的“extend”时,它也在扩展视图(如果你需要扩展另一个组件的视图,可以用“extendView: 'another-component-type')。
谢谢你举报,@christosapos。 关于无法基于文本组件添加扩展按钮组件空格的好问题。。推荐的组件方法是使用事件驱动的API。 从这里开始: 查看你所在模块的[GrapesJS文档](https://grapesjs.com/docs/) 寻找“on()”事件监听器方法 大多数操作可以通过监听编辑器和组件事件来实现 常见模式: “JavaScript 留意变化 editor.on('change', () => console.log('something changed')); 组件生命周期 editor.on('component:mount', (c) => console.lo...
相关问答
通过相似的问题讨论继续研究。
问题 #3574
添加特质不会被特质管理器识别。
以下是[docs](https://grapesjs.com/docs/modules/Traits.html#add-traits-to-components)的示例。 有没有进一步的配置可以让元素的新特质显示? 使用输入的示例无法运行,我的ID被接收了,但额外的属性没有。...
问题 #5232
工作者 - 无头“文档未定义”
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? 114.0.5735.133 可复制演示链接 不可能添加工蚁来繁殖。 描述一下那个虫子 如何复现这个漏洞?添加一名网页工作人员。在工作者内部初始化 GrapesJS,并设置“无头”选项。添加一个带...
问题 #3688
如何自定义组件
我 https://grapesjs.com/docs/modules/Components.html#define-custom-component-type 读了这份文档,并尝试编写以下代码。我想让“mj-body”无法删除: 但我看不到效果,请帮帮我
问题 #3409
自定义组件属性,但不是特质
我想创建一个带有属性的自定义组件,该属性会被特定代码更新,但我不希望这个属性作为特性可见且可更新;假设我的属性叫“ebTesto”,我写了一个插件函数: 我本以为会在存储的 JSON 的“gjs-components”部分找到新属性,但结果是这样的: 也许我尝试的方式错了? 有...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
Vanilla GrapesJS vs GrapesJS With Plugins: What You Actually Get Out of the Box (2026)
New to GrapesJS? See exactly what the stock editor gives you, where it falls short, and which plugins close the gaps — a beginner-friendly 2026 comparison
教程
Lighthouse for GrapesJS: Audit Accessibility and SEO Without Leaving the Editor
Live WCAG 2.1/2.2 accessibility auditor + SEO manager for GrapesJS. Every finding is bound to the exact component — click to select, then one-click fix.
教程
GrapesJS DevTools: A Developer Panel Inside Your Editor
If you've ever debugged GrapesJS with console.log(editor.getSelected()) and a dozen throwaway event listeners — this post is for you.
浏览插件分类
直接跳转到市场上的插件分类页面。