Firefox:无法拖动超链接的元素子项
考虑以下标记:
Foo Bar
现在将一个dragstart
事件附加到sup
元素:
$(document).ready(function () { $("sup").on('dragstart', function(e) { console.log('shikaka'); }); });
这个活动永远不会开火。 我一直在研究,在Firefox中,默认情况下链接是可拖动的,所以我认为这可能有效:
$(document).ready(function () { $(".link").on('dragstart', function(e) { e.preventDefault(); e.stopPropagation; //event return false; does not work. }); $("sup").on('dragstart', function(e) { console.log('shikaka'); }); });
我甚至尝试了一些“疯狂”的东西,比如向孩子触发事件:
$(".link").on('dragstart', function (e) { e.preventDefault(); e.stopPropagation; $(this).find('sup').trigger('dragstart'); });
互联网上有一些post表明你也可以通过取消mousedown
事件来禁用该事件。 以上任何一个尝试使用dragenter
和mousedown
例子都具有相同的效果。
我的问题是,有没有办法在firefox中“短路”默认事件,使其触发子元素的事件? 或者,有没有办法只阻止父事件,但仍然能够拖动子元素?
我正在测试它,如果从标签中删除
href
属性,它就不应该是可拖动的,并且事件不应该触发,如果你想使两个元素都可拖动,则添加属性draggable === true
,然后拖动事件将在和子项中触发。
我仍然需要标签中的
href
属性的数据,您可以将其添加为data-href或类似的另一个属性。
您可以在下面的代码段中尝试它。
document.getElementById('a').addEventListener('dragstart', function() { console.log('Dragging a link…'); }); document.getElementById('span').addEventListener('dragstart', function() { console.log('Dragging a span…'); });
and some more text