主题: editor.focus() 光标无法定位到默认文本末尾
作者: lziyanl, 发布日期: 2013-12-06 09:21:46, 浏览数: 3884
操作系统: ie、firefox、chrome

浏览器版本:

KindEditor版本: 4.1.7

BUG再现步骤:

1.    editor = K.create('textarea[name=content]');

2.    editor.html('文本和图片');
3.    editor.focus();

期望结果: 光标能定位到文本内容的最后

作者: memoryza, 发布日期: 2013-12-06 09:48:05
我也有同样的困扰,正在思考如何fixed,希望作者大神能给出答案谢谢
回复
作者: memoryza, 发布日期: 2013-12-06 10:10:08

原来自带的api中有这样的说明,用range [事实证明我说错了,刚才我试验能focus到最后跟range无关,我去掉代码也一样,但是==!第二次focus的时候就不行了]

http://kindeditor.net/docs/range.html#createbookmark-serialize

回复
作者: lziyanl, 发布日期: 2013-12-06 10:57:09

回复memoryza:怎么使用?

var range = K.range(document);
报这个错误:Uncaught WrongDocumentError: A Node was used in a different document than the one that created it (that doesn't support it). 
回复
作者: lziyanl, 发布日期: 2013-12-06 11:00:20

回复memoryza:使用这段代码可以光标可以定位到纯文本最后,但是对于含html的文本如图片等,就不顶用了

function setFocusEnd(obj){
	if(typeof obj == 'string')
		obj = document.getElementById(obj);
	obj.focus();
	if(obj.createTextRange){//ie
		var rtextRange = obj.createTextRange();
		rtextRange.moveStart('character', obj.value.length);
		rtextRange.collapse(true);
		rtextRange.select();
	}
	else if(obj.selectionStart){//chrome "<input>"、"<textarea>"
		obj.selectionStart = obj.value.length;
	}
	else if(window.getSelection){
		var sel = window.getSelection();
		var tempRange = document.createRange();
		tempRange.setStart(obj.firstChild, obj.firstChild.length);
		sel.removeAllRanges();
		sel.addRange(tempRange);
    }
回复
发表新帖 发表回复