【发布时间】:2009-10-15 01:46:29
【问题描述】:
我一直在寻找试图找出为什么 IE 不会保存当前插入符号位置然后重新加载它。为了描述情况,它的工作原理如下:
客户希望使用 ajax 图像加载器定制 Tinymce,该加载器本质上很简单,任何“白痴”都可以上传并在文本编辑器中为图像设置一些设置,使其看起来不错。我们有很多客户喜欢从 word 中粘贴,而 fckeditor 只是不再剪切它了。无论如何,ajax/上传器都可以完美运行。将图像输入编辑器时出现问题。 FF/Opera/Crome 等,完美运行,但 IE 肯定有问题。
这就是我需要回答的问题,Tinymce 失去焦点,因为弹出一个 jQuery 对话框进行上传(这个功能不能作为插件开发,他们需要外部工具,所以没有 tinyMCEPopUp 类/函数可以工作,所以我不能简单地调用 tinyMCEPopup.restore()) 我需要保存图像的插入符号位置/选择并存储它/通过某些函数传递它,并在放置时恢复选择。
我已经尝试了数百种方法,只有一种方法获得了正确的选择长度,但光标仍然位于 pos 0。这在 IE 中创建范围对象时有效
if(document.selection) {
b = document.getElementById('txtarea');
range = b.createTextRange();
//the rest of the jaz
}
许多消息来源告诉我,从 DOM 获取它是行不通的,因为 Tinymce 是在 iframe 中构建的,但 createRange() 目前也没有存储。如果有人知道或找到解决此问题的方法,我将不胜感激,我已经绞尽脑汁 16 小时的开发时间试图在没有可用解决方案的情况下解决这个问题。使用 tinyMCE.activeEditor.selection.getBookmark() 也没有骰子。我在 Javascript 方面处于平均水平,我知道自己的方式,但这绝对不是我的强项,PHP/后端/软件开发是。所以当有一个简单的解决方案时,可能只是我很愚蠢。
感谢您的宝贵时间。
【问题讨论】:
-
什么时候调用 tinyMCE.activeEditor.selection.getBookmark()?我认为这很可能是您需要的,您可能只是在错误的时间调用它。
-
我在设置里面调用它书签,甚至在调用 jQuery 对话框之前,所以有焦点。
标签: javascript dom internet-explorer tinymce range