首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue TipTap编辑器-无法添加链接

Vue TipTap编辑器-无法添加链接
EN

Stack Overflow用户
提问于 2022-03-13 19:28:09
回答 1查看 1K关注 0票数 2

我正在使用Vue3 & TypeScript构建一个TipTap Wysiwyg编辑器。在尝试使用链接扩展时出现问题(其他扩展,如StarterKit、突出显示和TaskList可以正常工作)。

下面是文档:https://tiptap.dev/api/marks/link/

我安装了正确的链接扩展yarn add @tiptap/extension-link

进口import Link from '@tiptap/extension-link'

使用默认选项向编辑器添加链接扩展如下:

代码语言:javascript
复制
setup() {
  const editor = useEditor({
    extensions: [..., Link],
    ...
  return {
    editor,
  }
}

获取以下错误:

代码语言:javascript
复制
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'target')   tiptap-extension-link.esm.js?2dbe:148 

任何帮助都将得到极大的帮助。

EN

回答 1

Stack Overflow用户

发布于 2022-03-24 13:39:16

正如您在npm包站点中看到的那样,延伸-链接目前是beta版,因此我相信包本身中目前存在缺陷或缺少参数,因此为了克服该错误,您可以通过这样配置链接来传递参数:

代码语言:javascript
复制
Link.configure({
          HTMLAttributes: { target: '_blank' },
          linkOnPaste: false,
          openOnClick: true,
        }),

通过这样做,包可能不会像我所期望的那样工作,所以您可以利用这样的事实,即现在您的编辑器理解了标记,但是自动转换为链接的逻辑可能不起作用,因此您应该编写逻辑urself并将新文本传递给编辑器,如下所示:

代码语言:javascript
复制
replaceUrls(string) {
  const urlRegex = /(?<!href=")(?<!>)(((https?:\/\/)|(www\.))[^\s|<]+)/g
  return string.replace(urlRegex, (url) => {
    let hyperLink = url
    if (!hyperLink.match('^https?://')) {
      hyperLink = 'http://' + hyperLink
    }
    return (
      '<a href="' + hyperLink + '" target="_blank" >' + url + '</a> &nbsp;'
    )
  })
}

因此,您可以使用以下命令更新编辑器内容,以便将链接转换为编辑器理解的标记

代码语言:javascript
复制
editor.commands.setContent(replaceUrls(editor.getHTML()), false)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71460141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档