ckeditor を使用してリンクを追加しようとしています。
<a href="$JSPFILENAMES.getAbsoluteJSPName("LOGIN_JSP")?type=7">login</a>
ckeditor のハイパーリンク アイコンをクリックして、$JSPFILENAMES.getAbsoluteJSPName("LOGIN_JSP")?type=7 を貼り付けています。これを行うと、リンクは href="$JSPFILENAMES.getAbsoluteJSPName(" で作成されます。最初の二重引用符の後のものはすべて削除されます。この問題の解決策を見つける必要があります。私ができない 2 つの解決策を考えることができます。さまざまな制約があるため、実装することはできません。
解決策 1: login のような二重引用符の代わりに単一引用符を使用して、href でハイパーリンクを作成します。ckeditor にはこれを達成するための設定がありますか?
解決策 2: リンクを挿入できるカスタム ドロップダウンを作成します。このようにして、一重引用符で href を作成できます。しかし、引用符や二重引用符、または " を使用すると ckeditor が失敗するため、これは機能しませんでした。または、次のコードを使用して挿入する必要があるテキスト内の文字をエスケープします。
CKEDITOR.plugins.add( 'links_tokens', {
requires : ['richcombo'], //, 'styles' ],
init : function( editor ) {
var config = editor.config,
lang = editor.lang.format;
var login_link = '<a href="$JSPFILENAMES.getAbsoluteJSPName("LOGIN_JSP")?type=7">login</a>';
var links_tags = [];
links_tags[0]=[login_link, "Login", "Login"];
links_tags[1]=["$company.getcompany_url()", "URL", "URL"];
editor.ui.addRichCombo( 'links_tokens', {
label : "Links tokens",
title :"Links tokens",
voiceLabel : "Links tokens",
className : 'cke_format',
multiSelect : false,
panel : {
css : [ config.contentsCss, CKEDITOR.getUrl( editor.skinPath + 'editor.css' ) ],
voiceLabel : lang.panelVoiceLabel
},
init : function() {
this.startGroup( "Links tokens" );
for (var this_tag in links_tags){
this.add(links_tags[this_tag][0], links_tags[this_tag][1], links_tags[this_tag][2]);
}
},
onClick : function( value ) {
editor.focus();
editor.fire( 'saveSnapshot' );
editor.insertHtml(value);
editor.fire( 'saveSnapshot' );
}
});
}
});