我已经完成了与您尝试实现的类似的操作,您必须向 radEditor 的该实例添加一些代码,特别是在 OnClientLoad 函数中添加一些 Javascript 以捕获放置事件,然后适当地处理数据。棘手的部分是保持光标定位,因为一旦 HTML 被删除,您就必须解析它。
如果可能的话,我真的建议使用插入按钮和可以从中选择的列表/对象,单击按钮并将其插入光标处,这更容易实现。
然而,这里的代码没有解析我如何将 drop 事件附加到编辑器,我使用 RadPanelBar 进行拖放。这甚至会随着任何拖放到编辑器中而触发,我还建议使用某种标记,例如<span class="dragableItem">BusinessPhone</span>
在解析内容时可以查找的标记。
如果您可以简单地制作您的列表 [[BusinessPhone]] 并将其拖放到其中,那显然是最简单的解决方案,尽管并不优雅。
function OnClientLoad(editor)
{
var element = document.all ? editor.get_document().body : editor.get_document();
//var eventHandler = document.all ? "drop" : "dragdrop";
var eventHandler = "drop";
$telerik.addExternalHandler(element, eventHandler, function(e) {
setTimeout(function() {
contentDropped(editor);
}, 300);
});
//....
}
function contentDropped(editor)
{
var content = editor.get_html();
//parse the content of the editor
editor.set_html(content);
}