我正在进行TinyMCE 4的新安装。编辑器是一个简单的内联DIV,只允许斜体和粗体(清理设置为删除大多数其他标签)。
tinymce.init({
inline: true,
// we only want simple bold and italic controls
toolbar: "undo redo | bold italic",
invalid_elements : "span,u,a,ul,ol,li,h1,h2,h3,h4,h5,h6,blockquote,strikethrough",
...
我的问题:我想通过ajax每隔几次按键将我的编辑器内容保存回我的数据库。
为了运行清理,我先保存内容:
tinyMCE.triggerSave();
然后将清理后的内容发送回我的数据库 - 当然,它会适当地捕获代码炸弹等等。
var strData = tinymce.activeEditor.getContent() ;
这一切都很好,除了在编辑器中,光标返回到内容的开头。
我想我可以通过在保存之前设置书签来返回正确的位置:
// set bookmark
var bm = tinymce.activeEditor.selection.getBookmark();
// save and cleanup, then ajax
tinyMCE.triggerSave();
...ajax stuff here
// Restore the selection bookmark
tinymce.activeEditor.selection.moveToBookmark(bm);
但这似乎不起作用。
我还以为我可以在保存之前捕获当前节点和偏移量:
var nd = tinymce.activeEditor.selection.getNode();
var os = tinymce.activeEditor.selection.getRng().startOffset;
并通过以下方式返回正确的位置:
tinymce.activeEditor.setCursorLocation(nd, os);
但这会产生错误,因为nd显然不是有效的节点对象。
这是因为我的'选择'实际上是一个零长度的字符串(它是一个光标点,而不是一个选择)?
我担心我对API 4的官方文档有一些困难,这不像API 3的文档那样“充实”(我猜因为它是最近的更新)。
我可以在Stackoverflow上找到的大多数帮助和示例(以及一般的谷歌搜索)都与API 3有关(它似乎是完全不同的野兽)。
任何人都可以告诉我,我想要的是什么吗?
答案 0 :(得分:6)
嗯,你可以使用非HTML书签:
// set bookmark
var bm = tinymce.activeEditor.selection.getBookmark(2,true);
// save and cleanup, then ajax
tinyMCE.triggerSave();
...ajax stuff here
// Restore the selection bookmark
tinymce.activeEditor.selection.moveToBookmark(bm);