CKEditor 如何在小部件中允许 href="javascript:void(0)"

CKEditor how to allow href="javascript:void(0)" in a widget

我找不到关于如何让 CKEditor 将 href="javascript:void(0)" 保存在我放置在小部件模板中的 link 中的干净解决方案。当我保存它时,通过调用 CKEDITOR.instances.*.getData(),它 returns href="javascript void(0)".

我尝试在 config.js 中设置 config.allowedContent = true;config.linkJavaScriptLinksAllowed = true;,但它们似乎都没有做任何事情...

我已阅读 this page,其中指出应该修复此问题,但这不起作用。有什么想法吗?

下面是有趣的简化 plugin.js 部分。这允许 link 中的 href 属性,但它仍然会删除 :.

template: 
  '<div class="container">' +
    '<a href="javascript:void(0)">' +
      '<span class="label">Label</span>' +
    '</a>' +
  '</div>',

allowedContent:
  'a[href]; div(*); span(*);',

editables: {
  Label: {
    selector: '.label',
    allowedContent: ''
    }
 }

CKEditor版本:4.5.9 浏览器:Chrome

您在变更日志中找到的 bug fix 仅针对 Link 对话框实现,因此它仅在通过插件对话框插入 links 时有效。

据我了解,您的情况有所不同,因为您使用 link 和 href="javascript:void(0) 作为小部件模板的一部分。不确定您的模板结构是什么以及您是如何创建小部件的,但是在创建它时您可以使用 editables 属性 来定义小部件的这个可编辑部分中允许的元素:

editables: {
    content: {
        selector: '.widget-content',
        allowedContent: 'p a[href]'
    }
}

因此,使用 allowedContent 您可以为小部件的这一部分定义允许的内容 - 在本例中为 p 标签和具有 href 属性的 a 标签。使用这样的配置 <a href="javascript:void(0)">Link</a> 应该正确插入。

您可以阅读有关允许的内容规则的更多信息in the documentation