CKEditor - PasteFromWord向属性添加类

时间:2017-09-23 13:03:40

标签: javascript attributes ckeditor

我正在尝试在使用CKEditor的PasteFromWord插件时强制将属性添加到特定链接。

我正在查看pastefromword / filter文件夹中default.js的以下部分,但似乎没有任何内容对粘贴的代码产生任何影响。

    private async Task UniversallyEmail(string email, string subject, string messageBody)
    {
        messageBody = Uri.EscapeDataString(messageBody); 
        string url = $"mailto:{email}?subject={subject}&body={messageBody}";
        await Launcher.LaunchUriAsync(new Uri(url));
    }

我尝试了a.setAttribute('class','myclass'),a.class ='myclass'但没有添加任何内容。

我希望检查a.href是否包含单词'javascript'并添加class属性(如果包含)。

我是否在寻找合适的地方?

感谢。

1 个答案:

答案 0 :(得分:0)

此解决方案(或hack)适用于CKEditor 4.5.7,因此您可能需要进行调整以适合您的特定版本。

首先,您对检查href并添加课程的位置是正确的,因此您可以使用此代码或类似内容:

a: function(a) {
    a = a.attributes;
    if (attrs.href && attrs.href.indexOf('javascript') != -1) {
        attrs.class = 'myclass';
    }

接下来,在很长的getRules函数中进一步查找此代码(根据您的版本,它可能会有所不同):

'class': function (value, element) {
    if ( element.classWhiteList && element.classWhiteList.indexOf( ' ' + value + ' ' ) != -1 )  {
        return value;
    }
    return false;
},

现在您需要覆盖类过滤器。最简单的方法是将类名称内联,硬编码添加,如下所示:

'class': function (value, element) {
    if ( (value == 'myclass') || ( element.classWhiteList && element.classWhiteList.indexOf( ' ' + value + ' ' ) != -1 ) ) {
        return value;
    }
    return false;
},

现在,如果您的粘贴链接中包含字符串' javascript',则会将myclass添加到{{1}}。