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

问题 #2116💬 已回答提出于 2019年7月3日作者 rahuloftheramaneffect1 个反应

NS_ERROR_FAILURE rte.exec

快速解答作者 artf❤ 1

这是 grapesjs处理组件的方式出了问题吗?你能帮我理解一下为什么会这样,以及我该怎么做吗? 是的,这就是内置文本组件和RTE的工作原理,所以我建议你更新 result() 逻辑,添加一个检查所选组件是否是链接,如果是这样就用别的东西替换

阅读下方完整回答 ↓

问题

我目前正在使用 GrapesJS 来为我的网站博客文章构建一个编辑器。我想改变默认行为的一件事是无法“解除链接”,即使用rte工具栏将已转换为超链接的文本。于是我写了以下函数: 这个功能允许你撤销链接,只要光标/选择在超链接文本中的任何位置。 我通过选择段落中的一部分文本并将其转换为超链接,方法如下(超链接按钮是RTE工具栏中最右边的按钮): ![测试设置](https://user-images.githubusercontent.com/9363958/60618298-6e9e6980-9df3-11e9-9b6d-1d2d1b3f7e7e.png) [工作案例] 正如你在左侧图层管理器中看到的,尽管选区(“GrapesJS”)已经转换成链接,但除非我点击当前文本块外,否则它不会被识别为新组件。 此时,我可以再次选择文本,并点击与超链接命令关联的按钮成功解除链接。 ![工作案件](https://user-images.githubusercontent.com/9363958/60618626-47946780-9df4-11e9-8252-43ff6d88962d.png) [失败案例] 然而,如果链接创建后我点击块外,链接会被识别为组件,并在图层管理器中显示为文本节点的子节点。 现在,如果我尝试点击链接内并按下按钮,它不起作用,反而在执行 http://unpkg.c...

回答(2)

artf• 2019年7月12日

这是 grapesjs处理组件的方式出了问题吗?你能帮我理解一下为什么会这样,以及我该怎么做吗?

是的,这就是内置文本组件和RTE的工作原理,所以我建议你更新 result() 逻辑,添加一个检查所选组件是否是链接,如果是这样就用别的东西替换

const comp = editor.getSelected();
comp.is('link') && comp.replaceWith(`${comp.get('content')}`);
rahuloftheramaneffect• 2019年7月12日

这方法非常成功!谢谢!

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

浏览插件分类

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