使用 link - Drupal/Jquery UI 时,Ckeditor 库会从目标属性中删除括号

Ckeditor library strips out brackets from target attribute when using link - Drupal/Jquery UI

你好,我有一个 drupal 7 项目,它使用 ckeditor 库(不是模块)和一个名为 ckeditor_link 的插件。

我正在使用此插件,以便用户可以 link 使用预输入功能在所见即所得中使用内部路径。

我希望的功能之一是,一旦用户在对话框的 link 选项卡中选择内部路径,他们就可以转到目标选项卡并将其值设置为 [dialog] -这就是 jquery ui 对话框的短代码如何根据演示 <a href="link-to-content" target="[dialog]">Dialog Link</a> 但是在 ckeditor 库 中有一行缩小 link.js 去除非字母字符的文件 commit:function(a){a.target||(a.target={});a.target.name=this.getValue().replace(/\W/gi,"")}

结果是,当用户 link 打算将 link 作为对话时,结果实际上是 <a href="link-to-internal-path" target="dialog">Dialog Broken</a>,它不会挂接到 shortcode/out 框 drupal jquery ui 功能。

如何覆盖此 ckeditor 规则?最好直接在我正在使用的 ckeditor_link 插件中。

我不太确定你是如何插入内部 link 目标的("link to anchor in text" 根据我的理解)但是看看编辑器代码,我可以告诉你,有问题的 Regex 模式已在 CKEditor 4.5.5 中从 /\W/gi 更改为 /([^\x00-\x7F]|\s)/gi,并且不再删除 []。请看下面的代码片段:

console.log("[dialog]".replace(/([^\x00-\x7F]|\s)/gi,""));
console.log("[dialog]".replace(/\W/gi,""));

如果此模式确实是您问题的根源,那么我强烈建议将编辑器升级到 4.8 版。