Javascript Rangy-插入节点IE<;9不';插入插入符号
我使用Rangy for compatibility在WYSIWYG编辑器(uEditor)中插入一个节点 但是,在IE<9中,插入的节点放置在包含元素(iframe)的开头,而不是插入符号位置。只有在没有文本选择时才会发生这种情况 我已经创建了一个fiddle,它很粗糙,但具有相同的效果,尽管使用了div而不是uEditor使用的jquery/iframe 这是小提琴: 对于小于9的IE: 我知道提琴并不能代表我的实际代码,它最终可能取决于浏览器。但是如果有一种方法可以让它工作(插入插入符号而不选择文本),那么这可能就奏效了 小提琴代码:Javascript Rangy-插入节点IE<;9不';插入插入符号,javascript,internet-explorer,contenteditable,rangy,Javascript,Internet Explorer,Contenteditable,Rangy,我使用Rangy for compatibility在WYSIWYG编辑器(uEditor)中插入一个节点 但是,在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 = " ";
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”,现在可以完美地工作了。谢谢你,蒂姆。