TYPO3 10.4 rtekeep="1" 保存后删除

问题描述

我想在 TYPO3 10.4 中创建一个 JavaScript href 链接,以在 HTML 页面上打开隐私设置模式。链接总是在保存后被删除。我找到了使用 rtekeep="1" 来保留 JavaScript 链接解决方案。不幸的是,rtekeep 属性总是在保存后被删除。在较旧的 TYPO3 版本中,此技巧运行良好。

这是我的代码的样子:

<a href="javascript:xyz">Linktext</a>

我希望任何人都可以帮助我解决这个奇怪的问题,并提前致谢。 :)

解决方法

当然有多种方法可以解决这个问题。例如,有多种方法可以通过 CKEditor 和/或 RTE_parsefunc 配置将您的 HTML 列入白名单。在不尝试对内联 JS 提出意见的情况下,我将建议采用最小配置方式。

  1. 添加自定义“样式”

    由于使用自定义类将新元素添加到 CKEditor 很容易(虽然 data-... 在语义上会更好,但我不知道将它添加到 CKEditor 的简单方法),我正在使用它:

    将类似的内容添加到您的 CKEditor yaml(请参阅 https://usetypo3.com/ckeditor.html 以获取帮助):

    editor:
      config:
        stylesSet:
         - { name: 'Open consent modal',element: 'button',attributes: { class: 'btn btn-default open-consent' } }
    
  2. 附加点击处理程序

    添加这个 JavaScript(像往常一样在 <body> 的末尾):

    document.querySelectorAll('.open-consent').forEach(
      elem => {
        elem.addEventListener(
          'click',ev => {
            ev.preventDefault() // don't navigate for <a> or <button>
            yourShowModalFunction()
          }
        )
      }
    )