Javascript Rangy-插入节点IE<;9不';插入插入符号

Javascript Rangy-插入节点IE<;9不';插入插入符号,javascript,internet-explorer,contenteditable,rangy,Javascript,Internet Explorer,Contenteditable,Rangy,我使用Rangy for compatibility在WYSIWYG编辑器(uEditor)中插入一个节点 但是,在IE

我使用Rangy for compatibility在WYSIWYG编辑器(uEditor)中插入一个节点

但是,在IE<9中,插入的节点放置在包含元素(iframe)的开头,而不是插入符号位置。只有在没有文本选择时才会发生这种情况

我已经创建了一个fiddle,它很粗糙,但具有相同的效果,尽管使用了div而不是uEditor使用的jquery/iframe

这是小提琴:

对于小于9的IE:

我知道提琴并不能代表我的实际代码,它最终可能取决于浏览器。但是如果有一种方法可以让它工作(插入插入符号而不选择文本),那么这可能就奏效了

小提琴代码:

<!--HTML-->
  <div id="pageFrame" >
    Some text
  </div>
  <br/>
  <input type="button" id="clickNode" value="Insert Node" />
<!--End HTML-->

//Javascript
var theDiv = document.getElementById('pageFrame');
theDiv.contentEditable = true;

document.getElementById('clickNode').onclick = ( function() {
addTheNode();   
});

function addTheNode()
{
 rangy.init();

 var range = rangy.getSelection().getRangeAt(0);

 alert(range);

 var newNode = document.createElement("code");
            newNode.className = "code";         
            newNode.contentEditable = false;
            newNode.innerHTML = "&nbsp";
            range.insertNode(newNode);                      
}
//End Javascript

/*CSS*/

  body { font-family: verdana; font-size:11px;}

  div { border:1px solid #000000; padding:5px; }

  code { display:block; border:1px solid #ff0000 }    

/*End CSS */

一些文本

//Javascript var theDiv=document.getElementById('pageFrame'); theDiv.contentEditable=true; document.getElementById('clickNode')。onclick=(function(){ addTheNode(); }); 函数addTheNode() { rangy.init(); var range=rangy.getSelection().getRangeAt(0); 警报(范围); var newNode=document.createElement(“代码”); newNode.className=“代码”; newNode.contentEditable=false; newNode.innerHTML=“ ”; range.insertNode(newNode); } //结束Javascript /*CSS*/ 正文{字体系列:verdana;字体大小:11px;} div{border:1px solid#000000;padding:5px;} 代码{显示:块;边框:1px实心#ff0000} /*结束CSS*/
问题是在
insertNode()
调用发生之前,选择被销毁。
单击事件为时已晚:iframe已经失去焦点,IE中也失去了插入符号位置。您需要更早地执行此操作,或者防止单击将焦点从iframe移开。下面使用
mousedown
事件代替
单击


问题是在
insertNode()
调用发生之前,选择被销毁。
单击事件为时已晚:iframe已经失去焦点,IE中也失去了插入符号位置。您需要更早地执行此操作,或者防止单击将焦点从iframe移开。下面使用
mousedown
事件代替
单击


Arh,按钮作为对象添加到uEditor中,将源“link.bind('click',button.action')更改为使用“mousedown”,现在可以正常工作了。谢谢Tim.Arh,按钮作为对象添加到uEditor中,将源“link.bind('click',button.action')更改为“mousedown”,现在可以完美地工作了。谢谢你,蒂姆。