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

问题 #774💬 已回答提出于 2018年1月18日作者 ryandeba0 个反应

在解析内容时模仿自定义RTE的行为

快速解答作者 ryandeba

现在我仔细想想,选项1对我来说不太适用,因为我想防止任何内嵌样式被移除,也防止任何ID/类/属性被添加到子元素中。所以我想剩下的就是选项二,或者我没想到的另一个解决方案。

阅读下方完整回答 ↓

问题

你好,@artf, 我想在调用editor.setComponents("<div>This is a text component. <span style='font-size: 20px;'>This is a nested element that I don't want get parsed out.</span></div>")时复制[https://github.com/artf/grapesjs/blob/f74791da68b25d1037502a2ad06093da29e25830/src/dom_components/view/ComponentTextView.js#L69)的行为。在这个例子中,我希望嵌套span不会被解析为独立组件,这样我就无法选择它或以任何方式交互它(就像我在div上启用或禁用自定义RTE一样)。 我看到两个选项:调用 editor.setComponents后,程序性地启用和禁用外部 div 的 RTE,使得子元素和文本在 div上被视为content。我很确定这方法不用修改核心也能用grapesjs......还没测试过。修改[ParseHtml.parseNode](https://github.com/artf/grapesjs/blob/f74791da68b25d1037502a2ad06093da29e25830/sr...

回答(3)

ryandeba• 2018年1月18日

现在我仔细想想,选项1对我来说不太适用,因为我想防止任何内嵌样式被移除,也防止任何ID/类/属性被添加到子元素中。所以我想剩下的就是选项二,或者我没想到的另一个解决方案。

artf• 2018年1月19日

嘿,Ryan,这个自定义组件怎么样 “''js const domc = 编辑。主导组件; const textType = domc.getType('text'); domc.addType('raw-text', { model: textType.model.extend({ },{ isComponent: function(el) { if (el.hasAttribute && el.hasAttribute('data-raw-text')) { 返回 { 类型:'raw-text', 内容:el.innerHTML, 组件:[] // 这将避免解析子节点 }; } } }...

ryandeba• 2018年1月19日

谢谢@artf!我猜你的建议对我有效——我会在接下来的几个小时内试试。

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

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

全部教程 →

浏览插件分类

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