1

我相信查找/替换文本的问题是当所见即所得的介入时。但是,我相信有人已经想出了如何施展魔法。

这是文本区域,没有附加编辑器:

<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

如果您在您最喜欢的页面检查器(firebug、dev tools、dragonfly 等)中查看由 tinymce 生成的实际 Html,您会发现您实际上正在编辑启用 contentEditable 的 iframe。据我所知,它将使用 textarea/input 来设置初始内容,并在您将表单发布回服务器时执行其他某种巫术来将其设置回来。

如果您想手动执行此操作,可以使用以下方法:

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 回答
0

您的替换功能不起作用有两个原因。

1.之前的 textarea 的内容被替换了,但是你看不到结果,因为 tinymce 隐藏了 textarea 并使用 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 回答