|
|
1
6
下面是我解决可编辑元素上自定义拖动元素问题的方法。最大的问题是,当鼠标悬停在可编辑元素上时,无法确定鼠标光标的文本偏移量。我试过用鼠标单击来将插入符号设置到所需位置,但这不起作用。即使是这样,在拖动时也看不到插入符号的位置,只看到结果的放置。 由于可以将鼠标悬停事件绑定到元素而不是文本节点,因此可以将可编辑元素设置为临时不可编辑。查找所有元素并在一个范围内包装每个文本节点,以避免破坏文本流。每个跨度都应该有一个类名,这样我们可以再次找到它们。 包装之后,应该再次找到所有包装好的文本节点,并用一个类名用另一个跨度包装每个字符,这样可以再次找到它们。 使用事件委托,可以将事件添加到主可编辑元素,该元素将对每个字符范围应用样式,这些字符范围将显示插入符号,一个闪烁的GIF图像作为背景。 同样,使用事件委托,应该为每个字符上的鼠标向上事件(放置事件)添加一个事件。现在可以使用字符跨度在其父节点(包装文本节点)中的位置(偏移量)来确定偏移量。现在可以撤消所有环绕,保留对计算偏移的引用,而撤消环绕时保留对适用文本节点的引用。 使用浏览器的range&selection对象,现在可以使用计算的偏移量将选择设置为适用的文本节点,并在新设置的选择(插入符号位置)处插入所需的HTML,et viola! 下面是一个使用jquery的片段,它将查找textnode,并将其包装:
要查找每个文本节点并换行每个字符,请使用:
要撤消包装:
希望这种方法能帮助那些面临类似挑战的人 |
|
|
2
2
如果我理解你的意思,那么这只是基本的拖放操作。下面的解决方案应该接近火狐的最佳答案。我肯定有不同的功能 http://www.html5rocks.com/en/tutorials/dnd/basics/ 需要更多帮助。 设置要拖动的对象的“Draggable”属性,并将对象的“OnDragStart”方法设置为“DragStartHandler”或任何调用函数的方法。
|
|
|
3
1
目前正在开发一个HTML5 API来实现这一点,
尝试查看这些网站: |