2017-09-22 5 views
1

コンテキスト:C#.NET Webアプリケーション。TinyMCEテンプレートを選択:現在のコンテンツに追加する代わりにコンテンツを設定する

TinyMCEテキストエディタ。テンプレートを選択すると、テキストがテキストエリアの内容に追加されます。

この特定のテキストエリアの場合、製品所有者は、選択したテンプレートのテキストにコンテンツを設定し、既に設定されているコンテンツには追加しません。したがって、テンプレートが選択されると、現在のコンテンツを最初にクリアする必要があります。

誰でも教えてください。どのように達成できますか?

<script type="text/javascript"> 
var e = tinyMCE.get("MailText"); 
if (!e) { 
    tinymce.init({ 
    height: 200, 
    selector: "textarea#MailText", 
    theme: "modern", 
    plugins: ["template","code"], 
    templates: [ @Html.Raw(finalizeQueryVm.Templates)], 
     statusbar: false, 
     resize: false, 
     toolbar1: "insertfile undo redo | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist | code", 
}); 
} 

enter image description here

答えて

2

テンプレートプラグインは何の旗を持っていないとき、またはに指示する設定:それはここでは関係ですが、ないこと

は、私のコードのスニペットとスクリーンショットですコンテンツを置換または挿入します。変更templateプラグイン用のコードは確かに挿入するように変更することができtemplateプラグイン

や設定内容は、各テンプレートのために持っているものは何でも基準に基づいて - あなたが行うことができます物事のカップル...

1があります。 。プラスは、コードを完全に制御できることです。欠点は、templateプラグインが期待通りに機能するように、TinyMCEを更新するたびにこれらの変更を維持しなければならないということです。

2 - TinyMCEのエディタのイベント(例えば​​)にお任せ

事は、それはあなたに通知するイベントを発生エディタで起こる - これはあなたがイベントに基づいてアクションを実行することができます。これらのイベントの1つは​​です。いくつかのマーカーをテンプレートに入れて、これが挿入されている "テンプレート"であることを示すことができます。その後、挿入前にエディターの現在のコンテンツを削除します。たとえば...

tinymce.init({ 
    selector: "#myEditor", 
    ... 
    setup: function (editor) { 
    editor.on('BeforeSetContent', function(e) { 
     console.log('BeforeSetContent: ' + e.content); 
     if (e.content.startsWith("<!-- replace -->")) { 
     console.log('REMOVING EXISTING CONTENT'); 
     editor.setContent(""); 
     } 
    }); 
    } 
}) 

この例では、テンプレートの最初の部分は、HTMLコメント<!-- remove -->であることを前提としています。貼り付けからテンプレートの挿入まで、コンテンツの設定を引き起こすものが何であるかを知る方法はありません。そのため、テンプレートに何かを入れて、エディタの現在のコンテンツを削除する必要があることを知る必要があります。

+0

これは間違いなく私が望んでいた答えの一種です! オプション#2を選択する傾向がありますが、テストで意図しない動作が発生していないことが示されている場合のみです。 –

関連する問題