【问题标题】:ckeditor default target link=" _blank" not work properlyckeditor 默认目标链接=“_blank”无法正常工作
【发布时间】:2018-03-15 10:40:17
【问题描述】:

我的 ckeditor 版本是 4.4.7

我想将默认目标更改为我添加到 ckeditor 的文本的每个链接,我找到了这段代码

CKEDITOR.on('dialogDefinition', function(ev) {

  try {

    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;

    if (dialogName == 'link') {

      var informationTab = dialogDefinition.getContents('target');

      var targetField = informationTab.get('linkTargetType');

      targetField['default'] = '_blank';

    }

  } catch (exception) {

    alert('Error ' + ev.message);

  }

});

CKEDITOR.on('instanceReady', function(ev) {
  var editor = ev.editor,
    dataProcessor = editor.dataProcessor,
    htmlFilter = dataProcessor && dataProcessor.htmlFilter;
  htmlFilter.addRules({
    a: function(element) {
      element.attributes['target'] = "_blank";
    }
  });
});

我将此代码添加到 ckeditor 文件夹的 link.js 文件中,它正在工作 但不正确

我的意思是如果我将带有链接的文本从 word 复制到编辑器,它不会自动将 target_blank 添加到 href

但我必须点击它上面的“编辑链接”,然后才能看到默认目标已经在 _blank 上

然后我点击确定并保存然后它就可以工作了。

但我希望它在我从 word 复制的每个链接上自动设置 target="_blank"。

有人可以帮忙吗?

谢谢。

【问题讨论】:

  • 你用的是哪个版本?
  • 我的版本是4.4.7

标签: javascript jquery ckeditor


【解决方案1】:

你把代码放在哪里了?

我变了

type : 'select',
id : 'linkTargetType',
label : commonLang.target,
'default' : 'notSet',

_source\plugins\link\dialogs\link.js

type : 'select',
id : 'linkTargetType',
label : commonLang.target,
'default' : '_blank',

这很好用。

【讨论】:

  • 我尝试了你的方法,但仍然存在同样的问题。除非在编辑器中单击链接上的“编辑链接”,否则它不会打开新窗口。
【解决方案2】:

在插件文件中编辑并不是一个理想的解决方案。

最好的解决方案是将其添加到您的 js 文件中

CKEDITOR.on( 'dialogDefinition', function( ev ) {
   var dialogName = ev.data.name;
   var dialogDefinition = ev.data.definition;
      if ( dialogName == 'link' ) {
          var targetTab = dialogDefinition.getContents( 'target' );
          var targetField = targetTab.get( 'linkTargetType' );
          targetField[ 'default' ] = '_blank';
      }
});

【讨论】:

    【解决方案3】:

    我将此代码添加到 ckeditor 文件夹的 link.js 文件中,它工作但不正确

    如果您在link.js 文件中初始化编辑器和,则直接在 HTML 页面上使用此代码:

    var editor = CKEDITOR.replace( 'editor1', { });
    CKEDITOR.on('dialogDefinition', function(ev) {
    ...
    

    【讨论】:

    • 我编辑了 'pastefromword' 插件的 default.js,所以我不必编辑我网站的每一页,但感谢您的建议!
    • 您也可以将其添加到config.jsCKEDITOR.editorConfig = function( config ) {...}; 下方),这样您就不必在每次编辑器更新时更新您的过滤器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多