0

私は 2 つの ASP.NET Web フォーム アプリを持っています。最初は v4.0 を対象とし、次に .NET フレームワークの v4.5 を対象としています。ASP.NET CKeditor プラグイン v3.6.4 を使用しています。「ExtraPlugins」プロパティを使用して「フレーズ」プラグインを登録できないことを除いて、すべてがうまく機能します.Javascriptソリューションは機能します:

CKEDITOR.replace('<%=CKEditor1.ClientID%>',
        {
            extraPlugins: 'phrases',
            toolbar:
            [
                ['Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink'],
                ['phrases']
            ]
        });

しかし、「ExtraPlugins」プロパティ ソリューションは機能しません。

<CKEditor:CKEditorControl ID="CKEditor1" BasePath="~/ckeditor" ExtraPlugins="phrases" Toolbar="Basic" runat="server" />

助けてください。

WP さん、よろしくお願いします。

4

1 に答える 1

3

私はいくつかの実験を行い、最終的にそれがどのように機能するかを知っています.

次の ASP.NET CKEditor Web コントロール タグが *.aspx ページに配置されます。

<CKEditor:CKEditorControl ID="CKEditor1" BasePath="~/ckeditor" ExtraPlugins="phrases" Toolbar="Basic" runat="server" />

次に、このタグは出力される HTML ドキュメントでレンダリングされ、次の方法でユーザーのブラウザーに送信されます。

最初の部分:

<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
CKEditor_TextBoxEncode('CKEditor1', 0); 
return true;
}
//]]>
</script>

第二部:

<textarea name="CKEditor1" rows="2" cols="20" id="CKEditor1">
</textarea>

三分の一:

<script type="text/javascript">
//<![CDATA[
var CKEditor_Controls=[],CKEditor_Init=[];function CKEditor_TextBoxEncode(d,e){var f;if(typeof CKEDITOR=='undefined'||typeof CKEDITOR.instances[d]=='undefined'){f=document.getElementById(d);if(f)f.value=f.value.replace(/</g,'&lt;').replace(/>/g,'&gt;');}else{var g=CKEDITOR.instances[d];if(e&&(typeof Page_BlockSubmit=='undefined'||!Page_BlockSubmit)){g.destroy();f=document.getElementById(d);if(f)f.style.visibility='hidden';}else g.updateElement();}};(function(){if(typeof CKEDITOR!='undefined'){var d=document.getElementById('CKEditor1');if(d)d.style.visibility='hidden';}var e=function(){var f=CKEditor_Controls,g=CKEditor_Init,h=window.pageLoad,i=function(){for(var j=f.length;j--;){var k=document.getElementById(f[j]);if(k&&k.value&&(k.value.indexOf('<')==-1||k.value.indexOf('>')==-1))k.value=k.value.replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');}if(typeof CKEDITOR!='undefined')for(var j=0;j<g.length;j++)g[j].call(this);};window.pageLoad=function(j,k){if(k.get_isPartialLoad())setTimeout(i,0);if(h&&typeof h=='function')h.call(this,j,k);};if(typeof Page_ClientValidate=='function'&&typeof CKEDITOR!='undefined')Page_ClientValidate=CKEDITOR.tools.override(Page_ClientValidate,function(j){return function(){for(var k in CKEDITOR.instances){if(document.getElementById(k))CKEDITOR.instances[k].updateElement();}return j.apply(this,arguments);};});setTimeout(i,0);};if(typeof Sys!='undefined'&&typeof Sys.Application!='undefined')Sys.Application.add_load(e);if(window.addEventListener)window.addEventListener('load',e,false);else if(window.attachEvent)window.attachEvent('onload',e);})();CKEditor_Controls.push('CKEditor1');
CKEditor_Init.push(function(){if(typeof CKEDITOR.instances['CKEditor1']!='undefined' || !document.getElementById('CKEditor1')) return;CKEDITOR.replace('CKEditor1',{"extraPlugins" : "phrases", "htmlEncodeOutput" : true, "toolbar" : "Basic"}); });
//]]>
</script>

ソース コードの 3 番目の部分には、ASP.NET CKEditor タグと同等にレンダリングされる最も重要なステートメントがあります。

CKEDITOR.replace('CKEditor1',{"extraPlugins" : "phrases", "htmlEncodeOutput" : true, "toolbar" : "Basic"}); });

ご覧のとおり、ASP.NET WebControl のプロパティは、CKEditor インスタンスの Javascript 構成のプロパティにExtraPlugingsリンクされています。extraPlugins

いくつかの認識の後、JS 構成extraPluginsオプションは実際には CKEditor ツールバーに表示され、すぐに使用できるようにプラグインをアタッチせず、実際にはプラグインを登録して使用できるようにするだけであることが判明しました。プラグインは、その方法で、またはconfig.jsCKEditor の構成ファイルに登録できます。

CKEDITOR.editorConfig = function( config )
{
    config.extraPlugins = 'phrases';

    // Define changes to default configuration here. For example:
    // config.language = 'fr';
    // config.uiColor = '#AADC6E';
};

登録後、プラグインをツールバーに追加して使用できるようにする必要があります。たとえば、次のようにします。

<CKEditor:CKEditorControl ID="CKEditor1" BasePath="~/ckeditor" ExtraPlugins="phrases" Toolbar="[{ name: 'plugins', items: ['phrases'] }]" runat="server" />

またはJavascriptコードを使用して。

したがって、要約ExtraPluginsすると、プロパティはプラグインの登録のみを引き起こします。CKEditor ツールバーに配置したい場合は、適切なステートメントを記述して CKEDitor ツールバーを構成する必要があります。

于 2013-04-10T09:57:02.797 に答える