2017-09-23 8 views
0

CKEditorのPasteFromWordプラグインを使用するときに、特定のリンクに属性を追加するよう強制しようとしています。CKEditor - 属性にクラスを追加するPasteFromWord

私はpastefromword/filterフォルダ内のdefault.jsから次のセクションを見ていますが、貼り付けられたコードに何も違いはありません。

a: function(a) { 
    a = a.attributes; 
    a.href && a.href.match(/^file:\/\/\/[\S]+#/i) && (a.href = a.href.replace(/^file:\/\/\/[^#]+/i, "")) 
} 

私はa.setAttribute( 'クラス'、 'MyClassの')、a.class = 'MyClassの' を試してみたが、何も追加されません。

a.hrefに 'javascript'という単語が含まれているかどうかを確認し、もしあればclass属性を追加したいと思います。

私は正しい場所を探していますか?

ありがとうございました。

+0

どのバージョンのCKEditorを使用していますか? – Atzmon

+0

@Atzmon - CKEditorを使用する4 - thx – RobertyBob

答えて

0

このソリューション(またはハック)はCKEditor 4.5.7に適用されるため、特定のバージョンに合わせて調整する必要があります。

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

次に、非常に長いgetRules関数内でさらに下にこのコードを見つける:

まず、あなたはhrefをチェックして、あなたは、このコードまたは類似した何かをすることができますので、あなたのクラスを追加する場所についての正しいです(バージョンによって若干異なる場合があります):

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

これで、クラスフィルタをオーバーライドする必要があります。彼らは文字列「のjavascript」が含まれている場合

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

は今、あなたはmyclassは、あなたの貼り付けリンクに追加されますされます:最も簡単なハックはこのように、ハードコードされ、自分のクラス名をインラインで追加することです。

+0

Thx Atzmon - これを午前中に確認してお知らせします – RobertyBob

+0

私はこれを今日試して何も追加していないようです - 私は 'attrs'を 'a'に変更して前の私はまた、getRulesの部分を、getRules:function(a、c){(value要素)ではなく、まだ良くない点に合わせて修正しました。単純な追加やアラートでさえもトリガーしないので、プラグインが使用されていることを実際には今確信できません。もう一度tmrwを試みます。 – RobertyBob

+0

プラグインが有効かどうかわからない場合は、 'a = a.attributes;'の前後に 'debugger;'コマンドを追加し、ブラウザのキャッシュをクリアしてdevツール(ChromeではF12)を起動します。 Wordからハイパーリンクを含むコンテンツを貼り付け、デバッガコマンドで実行が停止するかどうかを確認します。 – Atzmon

関連する問題