为了账号安全,请及时绑定邮箱和手机立即绑定

使用其对话框添加链接时出现 EmebrJS + CKEDITOR 错误

使用其对话框添加链接时出现 EmebrJS + CKEDITOR 错误

至尊宝的传说 2022-01-07 19:00:26
报告类型在 chrome 78.0.3904.97 中使用 CKEditor 添加的链接会出现以下错误,我也检查了最新的 firefox,我可以重现这个link.js?t=J8Q8:27 Uncaught TypeError: Cannot read property 'length' of undefined    at CKEDITOR.dialog.onOk (link.js?t=J8Q8:27)    at CKEDITOR.dialog.<anonymous> (ckeditor.js:613)    at CKEDITOR.dialog.l (ckeditor.js:10)    at CKEDITOR.dialog.fire (ckeditor.js:12)    at button.onClick (ckeditor.js:637)    at button.<anonymous> (ckeditor.js:575)    at button.l (ckeditor.js:10)    at button.fire (ckeditor.js:12)    at button.click (ckeditor.js:574)    at CKEDITOR.dom.element.<anonymous> (ckeditor.js:566)繁殖步骤启用 CKeditor 的链接单击ckeditor工具栏中的链接图标它会打开一个对话框以添加显示名称和链接添加链接和显示名称点击确定预期结果关闭对话框并将链接添加到 ckeditor 文本区域实际结果对话框没有关闭,控制台给出link.js?t=J8Q8:27 Uncaught TypeError: Cannot read property 'length' of undefined    at CKEDITOR.dialog.onOk (link.js?t=J8Q8:27)    at CKEDITOR.dialog.<anonymous> (ckeditor.js:613)    at CKEDITOR.dialog.l (ckeditor.js:10)    at CKEDITOR.dialog.fire (ckeditor.js:12)    at button.onClick (ckeditor.js:637)    at button.<anonymous> (ckeditor.js:575)    at button.l (ckeditor.js:10)    at button.fire (ckeditor.js:12)    at button.click (ckeditor.js:574)    at CKEDITOR.dom.element.<anonymous> (ckeditor.js:566)其他详情浏览器:chrome 78.0.3904.97 / firefox操作系统:MacCKEditor 版本:4.13.0安装的 CKEditor 插件:使用 CKEditor 作为 Emberjs 组件有人知道我该如何解决吗?我也检查了他们的 github 问题,但不幸的是我找不到任何东西
查看完整描述

1 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

错误在这里


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


      var dialogName       = e.data.name,

          dialogDefinition = e.data.definition;


      if ( dialogName === 'link' ) {


        dialogDefinition.onShow = function () {


            var dialog        = CKEDITOR.dialog.getCurrent(),

                linkType      = dialog.getContentElement( 'info' , 'linkType' ),

                anchorOptions = dialog.getContentElement( 'info' , 'anchorOptions' ),

                emailOptions  = dialog.getContentElement( 'info' , 'emailOptions' ),

                protocol      = dialog.getContentElement( 'info' , 'protocol' );


            linkType.getElement().hide();

            anchorOptions.getElement().hide();

            emailOptions.getElement().hide();

            protocol.disable();

        };

      }

    } );

我已经用下面的代码更新了这个


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


      var dialogName       = e.data.name,

          dialogDefinition = e.data.definition;


      if ( dialogName === 'link' ) {

        dialogDefinition.getContents('info').get('protocol')['items'].splice(2, 6);

        dialogDefinition.getContents('info').get('linkType')['items'].splice(1, 4);


        var target = e.data.definition.getContents('target');

        var options = target.get('linkTargetType').items;

        for (var i = options.length-1; i >= 0; i--) {

          var label = options[i][0];

          if (!label.match(/new window/i)) {

            options.splice(i, 1);

          }

        }

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

        targetField['default'] = '_blank';

      }

    } );


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信