2017-09-23 83 views
0

我试图强制一个属性被添加到特定的链接时使用CKEditor的PasteFromWord插件。CKEditor - PasteFromWord添加一个类到属性

我正在查看pastefromword/filter文件夹中的default.js的以下部分,但似乎没有任何区别粘贴的代码。我试过a.setAttribute('class','myclass'),a.class ='myclass',但没有添加任何内容。

我想检查一下,如果a.href包含'javascript'这个词并且添加了class属性。

我甚至在正确的地方看吗?

谢谢。

+0

您正在使用哪种版本的CKEditor? – Atzmon

+0

@Atzmon - 使用CKEditor 4 - thx – RobertyBob

回答

0

此解决方案(或破解版)适用于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; 
}, 

现在你会得到myclass添加到您的粘贴的链接,如果它们包含字符串“的javascript”。

+0

Thx Atzmon - 将在早上检查并告知您 – RobertyBob

+0

我今天尝试过,似乎没有添加任何内容 - 我将'attrs'更改为'a'以符合之前的在检查之后,我还修改了getRules部分以符合'getRules:function(a,c){'而不是(value。element),但仍然不好。我现在不能确定插件甚至被使用,因为即使是简单的添加或警报也不会触发。将再次尝试tmrw。 – RobertyBob

+0

如果您不确定插件是否已激活,请在'a = a.attributes;'之前或之后添加'debugger;'命令,清除浏览器缓存并启动开发工具(Chrome中的F12)。然后使用超链接粘贴Word中的某些内容,并查看执行是否在调试器命令处停止。 – Atzmon