Ajax Control Toolkit HTML エディターのカスタマイズに問題がありますか?
-
20-09-2019 - |
質問
ACT HTML エディターのデフォルト設定を変更するにはどうすればよいですか? たとえば、選択された太字ボタン、またはデフォルトのltrではなくrtl方向でエディタをロードしたいと考えています。
どうすればそれを実行できますか?上書きしました FillTopToolbar()
カスタムボタンを追加する方法はありますが、デフォルト設定を変更する方法がわかりません。
デフォルトのltrが選択されているので、rtlに変更したいと思います。
解決
いくつかの点を修正するために回答を編集しました
HTMLEditor には、サーバーサイド コードを使用してこれらのボタンの状態を設定する方法がありません。ただし、クライアントでは次を使用して初期化されます。 Sys.Application.load イベント. 。イニシャライザの後で、ユーザーが UI を操作する前にコードを実行した場合は、そのイベント ハンドラーに設定したいプロパティを設定できます。
太字ボタンと rtl ボタンの状態を設定するために必要なコードは次のとおりです。他のボタンの状態を変更したい場合は、ここから取得できます。
// Attach a handler to the load event.
Sys.Application.add_load(myOnLoadLoader);
function myOnLoadLoader() {
//This will run JUST after ALL code that was set to run during the load event has run
window.setTimeout(myOnLoad, 0);
}
function myOnLoad() {
var editor = $find('<% =editor.ClientID %>');
var toolbar = editor.get_changingToolbar();
var toolbarButtons = toolbar.get_buttons();
for (var i = 0; i < toolbarButtons.length; i++) {
var toolbarButton = toolbarButtons[i];
if (toolbarButton instanceof AjaxControlToolkit.HTMLEditor.ToolbarButton.Rtl ||
toolbarButton instanceof AjaxControlToolkit.HTMLEditor.ToolbarButton.Bold) {
toolbarButton.set_activeEditPanel(editor.get_editPanel());
toolbarButton.callMethod();
}
}
}
Sys (したがって Sys.Application) は、ASP.Net AJAX JavaScript (ページに追加する ScriptManager のおかげで追加されるファイル) に由来する名前空間です。これを使用する場合は、この行が Sys.Application.add_load(myOnLoad);
ASP.Net AJAX ファイルがロードされた後に実行されます。これにはいくつかの方法があります。
- このスクリプトをページ内の scriptManager よりも下に追加します。
- スクリプトを別の JS ファイルに移動し、ScriptManager を使用してそれを読み込みます (推奨)。
スクリプトを別のファイルに移動すると、次のことがわかります。 var editor = $find('<% =youreditor.ClientID %>');
もう機能しません。これは、JavaScript ファイルが (aspx ページのように) サーバー タグを解析してサーバー側の値に置き換えないためです。したがって、ここで問題となる部分は、 <% =youreditor.ClientID %>
.
これを修正するには、次のようにします。
これを aspx マークアップ (head セクション) に追加します。
<script language="javascript">
var myEditorId = '<%= youreditor.ClientID %>';
</script>
したがって、次のようになります。
<head runat="server">
<script language="javascript">
var myEditorId = '<%= youreditor.ClientID %>';
</script>
<title></title>
</head>
(マスター ページを使用している場合は、ページ内の ScriptManager の下に script タグを追加するだけです)
そして、JS ファイルでこれを置き換えます
var editor = $find('<% =youreditor.ClientID %>');
これとともに
var editor = $find(myEditorId);
他のヒント
エディター コントロールは rtl をネイティブにサポートしていないため、CSS を使用してこれを行う必要があります。次の CSS は方向を rtl に設定します -
div
{
direction:rtl;
}
HTML エディターのデフォルトのスタイルは、Editor.css ファイルにあります。