Telerik raddeitor在拖动时移动光标
本文关键字:移动 光标 拖动 raddeitor Telerik | 更新日期: 2023-09-27 18:12:41
我有一个c# webforms页面,我想把html元素拖到一个电子阅读器中。这部分按预期工作,除了当您将一个元素拖到编辑器上时,我希望raddeditor中的光标位置跟随鼠标。它的设置类似于Teleriks网站上的演示。除了我使用的是listview而不是treeview。http://demos.telerik.com/aspnet-ajax/editor/examples/treeviewandeditor/defaultcs.aspx
我试过模拟点击鼠标来移动光标,但没有运气。什么好主意吗?
编辑:我上周做了一个半工作的解决方案。它远非完美,但我决定分享它,以防有人想让它更好。
function controlDragging(sender, args) {
var event = args.get_domEvent();
var editor = $find("radEditLayout");
if (isMouseOverEditor(editor, event)) {
var x = event.pageX - event.offsetX;
var y = event.pageY - event.offsetY;
var node = editor.get_document().elementFromPoint(x, y);
if (node) {
setCaret(editor, node, 0);
}
}
}
function setCaret(editor, element, position) {
var selection = editor.getSelection(),
range = selection.getRange(true);
if (range.setStartAfter) {//W3 range
range.setStartAfter(element);
}
else { //IE7/8 textRange
range.moveToElementText(element);
range.moveStart('character', position);
}
range.collapse(true);
selection.selectRange(range);
}
function isMouseOverEditor(editor, event) {
return $telerik.isMouseOverElementEx(editor.get_contentAreaElement(), event);
}
还有什么建议吗?
也许你将能够找出一些范围,但我不确定究竟如何,因为我没有使用它们。下面是获取已选定范围http://www.telerik.com/help/aspnet-ajax/editor-getselection-1.html的基础知识,下面是如何获取文档对象,以便您可以在其中使用范围:http://www.telerik.com/help/aspnet-ajax/editor-getting-reference-to-radeditor-documentobject.html。也许这可以帮助你开始,但我认为这将是很多工作:如何设置插入符号(光标)的位置在可满足元素(div)?因为我不确定如何从鼠标坐标计算光标的位置
我知道这篇文章很老了,但也许其他人可以从中受益。这是一个片段,帮助我在RadEditor内容区域的随机位置。它不需要移动光标的位置。
kendoDropTarget({
drop: function(e) {
debugger;
var top = e.draggable.drag.y.location - $('.k-content').offset().top;
var left= e.draggable.drag.x.location - $('.k-content').offset().left;
element.css({
top: top + 'px',
left: left + 'px'
});
$('.overlay').remove();
$('.k-content').contents().find('body').html($('.k-content').contents().find('body').html() + $(element).outerHTML());
}