wangeditor-team / wangEditor-plugin-upload-attachment

wangEditor upload-attachments plugin
https://www.wangeditor.com/
MIT License
36 stars 16 forks source link

对于附件类型,是否能够支持点击附件名称打开新页面呢? #7

Closed charescape closed 2 years ago

charescape commented 2 years ago

实际使用场景:写一篇文章,文章内容中上传 zip 附件,如果我想把文章导出为 PDF,那么文中的 zip 附件就只会显示文字名称,点击后无任何反应

charescape commented 2 years ago

我试了一下使用 insertFn() 实现,但是 html 字符被转义了,无法实现点击打开新页面

image

yxf18 commented 2 years ago

同问,想要点击直接打开url

wangfupeng1988 commented 2 years ago

想要点击行为,在显示的时候为 span[data-w-e-type="attachment"] 绑定一个 click 事件即可

yxf18 commented 2 years ago

我这边这样修改了一下实现了;

// 生成 html 的函数
function attachmentToHtml(elem: SlateElement, childrenHtml: string): string {
  const { link = '', fileName = '' } = elem as AttachmentElement
  // return `<span data-w-e-type="attachment" data-w-e-is-void data-w-e-is-inline data-link="${link}" data-fileName="${fileName}">${fileName}</span>`
  return `<a data-w-e-type="attachment" data-w-e-is-void data-w-e-is-inline data-link="${link}" data-fileName="${fileName}" href="${link}" target="_blank">${fileName}</a>`
}
// 配置
const conf = {
  type: 'attachment', // 节点 type ,重要!!!
  elemToHtml: attachmentToHtml,
}
attachmentModule.elemsToHtml = [conf]
// 注册。要在创建编辑器之前注册,且只能注册一次,不可重复注册。
Boot.registerModule(attachmentModule)
yxf18 commented 2 years ago

想要点击行为,在显示的时候为 span[data-w-e-type="attachment"] 绑定一个 click 事件即可

那是不是需要在回显的地方,使用 addEventListener() 注册click事件?

wangfupeng1988 commented 2 years ago

@yangxuefneng 是的,几行代码就可以搞定。

lyraLe commented 2 years ago

conf改成elemToHtmlConf了

我这边这样修改了一下实现了;

// 生成 html 的函数
function attachmentToHtml(elem: SlateElement, childrenHtml: string): string {
  const { link = '', fileName = '' } = elem as AttachmentElement
  // return `<span data-w-e-type="attachment" data-w-e-is-void data-w-e-is-inline data-link="${link}" data-fileName="${fileName}">${fileName}</span>`
  return `<a data-w-e-type="attachment" data-w-e-is-void data-w-e-is-inline data-link="${link}" data-fileName="${fileName}" href="${link}" target="_blank">${fileName}</a>`
}
// 配置
const conf = {
  type: 'attachment', // 节点 type ,重要!!!
  elemToHtml: attachmentToHtml,
}
attachmentModule.elemsToHtml = [conf]
// 注册。要在创建编辑器之前注册,且只能注册一次,不可重复注册。
Boot.registerModule(attachmentModule)