Javascript 拖动父对象,但选择子对象上的文本?
我希望父div可以拖动,但子范围中的文本可以选择:Javascript 拖动父对象,但选择子对象上的文本?,javascript,css,html,draggable,Javascript,Css,Html,Draggable,我希望父div可以拖动,但子范围中的文本可以选择: <aside draggable="true" id="dragme"> This is an aside, drag me. <span id="copyme" draggable="false">But copy me!</span> </aside> 这里有一把小提琴: 今天有人能找到解决办法吗 更新:可能有解决方案,请查看更新的fiddle: 它的行为有点奇怪,但它能工作。有谁能
<aside draggable="true" id="dragme">
This is an aside, drag me. <span id="copyme" draggable="false">But copy me!</span>
</aside>
这里有一把小提琴:
今天有人能找到解决办法吗
更新:可能有解决方案,请查看更新的fiddle:
它的行为有点奇怪,但它能工作。有谁能从这把新小提琴中找到更好的解决方案吗?您可以向“copyme”元素添加事件侦听器,如下所示:
cm.addEventListener("mouseover", function() {
dm.setAttribute("draggable", "false");
});
cm.addEventListener("mouseout", function() {
var selObj = window.getSelection();
if (selObj) {
var selRange = selObj.getRangeAt(0);
var ancestor = selRange.commonAncestorContainer;
if (ancestor.parentNode === cm) {
selObj.removeAllRanges();
}
}
dm.setAttribute("draggable", "true");
});
有关完整解决方案,请参见此处的提琴:
我认为这(原则上)是目前你能做的最好的了
cm.addEventListener("mouseover", function() {
dm.setAttribute("draggable", "false");
});
cm.addEventListener("mouseout", function() {
var selObj = window.getSelection();
if (selObj) {
var selRange = selObj.getRangeAt(0);
var ancestor = selRange.commonAncestorContainer;
if (ancestor.parentNode === cm) {
selObj.removeAllRanges();
}
}
dm.setAttribute("draggable", "true");
});