私はhtmldataprocessorプラグインを見て、CKEditor v.4.5.8を使用しています。CKEditor 4.5.8のformactionからdata-cke-pa-formactionへの変換
私は(onclick
、onmouseover
、など)は、エディタのコンテキストで実行されるからスクリプトを防止するための便利な方法ですCKEditorバージョンの編集可能領域、で表示するdata-cke-pa-on*
保護された属性に変換されるon*
属性を見ています。
それは、また<button>
要素のいずれかformaction
属性を変換するために、高度なコンテンツフィルタリング(config.allowedContent = true
を残す)をオンにすることなく、、可能ですWYSIWYGエディタでdata-cke-pa-formaction
非実行属性に、ソースエディタに追加しましたか?コンパイルされたckeditor.jsやhtmldataprocessor.jsを直接編集するのではなく、config.jsファイル内でこれを行うことができますか?
私はconfig.jsのに次を追加しようとしました:
CKEDITOR.on('instanceLoaded', function(e) {
e.editor.dataProcessor.dataFilter.addRules({
elements: {
button: function(el) {
if(el.attributes && el.attributes['formaction']){
el.attributes['data-cke-pa-formaction'] = el.attributes['formaction'];
delete el.attributes['formaction'];
}
}
}
});
e.editor.dataProcessor.htmlFilter.addRules({
elements: {
button: function(el) {
}
}
});
});
これは、ソースエディタとWYSIWYGエディタの間で前後に切り替えるとき完璧に動作しますが、初期の負荷に要素はまだ<button formaction="javascript:alert(document.domain)">Click me!</button>
としてロードされています。私はCKEDITOR.on(beforeGetData、getDataなど)の他のイベントを使用しようとしましたが、デバッグに基づいて、これらの関数が設定スクリプト内で呼び出されることはありません。 addRules
の機能を別の場所に置く必要がありますか?
この回答をいただきありがとうございます - ACFを無効にして同じことを達成する方法はありますか? CKEditorが使用されているコンテキストでは、 'config.allowedContent = true;'を必要としているので、 'button'要素の' formaction'属性を、 'formaction'を変更せずにエディタでより良質なものに変換したいだけです'属性をサーバ側で使用します。 –
私は私の答えをudatedしています。 –
ありがとう、@ j.swiderski、でも私はまだそこにはいません。回答と結果の実装を反映するために質問を更新しました。 –