2021年1月8日金曜日

CKEditor5でのリンク属性にtarget, relを付加する

追記: APEX 23.1よりリッチ・テキスト・エディタはCKEditor5からTinyMCEへ置き換えられます。CKEditor5のカスタマイズ方法はTinyMCEには適用できません。

---- 

Oracle APEX 20.2よりリッチ・テキスト・エディタがCKEditor5に変わりました。それに伴いHTMLの直接編集機能が無くなっています。

これ自体はクロスサイト・スクリプティングの脆弱性を回避する観点から、良いことなのですが、リンク(Aタグ)をつけた時に別ウィンドウで開けなくなった、HTMLを編集できないからtarget属性を付けることができない、どうすればいい?という質問がありました。

CKEditor5については、FOEX GmbHのStefan Dobreの良い記事 A closer look at the Rich Text Editor of #orclAPEX 20.2 というのがあり、それを参照しながら、対応を実装してみました。

以下のJavaScriptをJavaScript初期化コードに記述して、CKEditor5のオプションを設定すると、target="_blank" rel="noopener noreferrer"がAタグの属性として付加されます。

function(options) {
  options.editorOptions.link = { addTargetToExternalLinks: true };
  return options;
}

ページ・アイテムP1_TEXTがリッチ・テキスト・エディタです。

これで対応が完了です。確認のために1ページだけのアプリケーションを作りました。

CKEditor5も大量のAPIがあって色々なことができるようです。時間を見つけて機能を確認したいコンポーネントのひとつです。