1

テキストの検索/置換の問題は、wysiwygがミックスに足を踏み入れたときだと思います。しかし、誰かが魔法のやり方を理解していると確信しています。

これが、エディタが接続されていないテキストエリアです。

<textarea id="template1" style="width:400px; height:200px;">
<div>Dear {{companyname}},</div>
<div>A new Support Case has been opened for you.</div>
<div>Support Case description:</div>
.........more html text follows
</textarea>

<script language="javascript" type="text/javascript">
$(document).ready(function(){

   var str = $("#template1").val();
   var newstr = str.replace("{{companyname}}", "ACME Inc");
   $("#template1").val(newstr);

}); 
</script>

エディターがいなくてもいいです。選択したエディター(TinyMCE)を適用するとすぐに、replace()メソッドは無視されます。

誰かが理由を知っていますか?

4

2 に答える 2

0

置換機能が機能しない理由は2つあります。

1.以前のテキストエリアのコンテンツは置き換えられますが、tinymceはテキストエリアを非表示にし、contenteditable iframeを使用して以前のコンテンツをロードおよびスタイル設定するため、結果を表示できません。エディターのコンテンツは、onSaveおよびonSubmitのテキストエリアに書き戻されます。

2. $(document).readyページのすべてのリソースがロードされましたが、tinymceエディターの準備ができていません。

これは、tinymceエディターでコードを置き換える方法に関する質問につながります。$(document).readyここでは役に立ちません。Tinymce構成パラメーターonInitを使用する必要があります

// Adds an observer to the onInit event using tinyMCE.init

tinyMCE.init({
   ...
   setup : function(ed) {
      ed.onInit.add(function(ed) {
          //console.debug('Editor is done: ' + ed.id);

          // replace the editor content
          var str = ed.getContent();
          var newstr = str.replace("{{companyname}}", "ACME Inc");
          ed.setContent(newstr);
      });
   }
});
于 2013-01-15T09:17:12.140 に答える
0

お気に入りのページ インスペクタ (firebug、開発ツール、トンボなど) で tinymce によって生成された実際の Html を見ると、実際には contentEditable を有効にして iframe を編集していることがわかります。私が知る限り、テキストエリア/入力を使用して初期コンテンツを設定し、フォームをサーバーに戻すときに他の種類のブードゥーを実行して設定を戻します。

手動で行う場合は、次の方法があります。

http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.getContent

http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.setContent

それらを介してテキスト処理を行うことができます。

于 2013-01-15T03:52:52.697 に答える