首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Firefox中拖动元素时出现问题

在Firefox中拖动元素时出现问题
EN

Stack Overflow用户
提问于 2016-12-31 09:54:12
回答 2查看 748关注 0票数 0

有没有什么原因导致图片在火狐中不能拖动,即使当属性为draggable="true"的时候?我正在用JS设计一个图像交换脚本,但在Firefox中运行它时遇到了一些问题。虽然代码在Chrome、Edge和IE中运行良好,但当我尝试在Firefox中拖放图像时,浏览器似乎不允许我拖动图像(没有重影图像出现),因此我的拖动事件不会触发或触发任何拖放事件。我正在通过document.createElement('img')生成图像,并使用

代码语言:javascript
复制
imgElement.setAttribute('draggable', true);
imgElement.setAttribute('ondragstart', 'drag(event)');

我的拖动函数:

代码语言:javascript
复制
function drag(ev) {
 if (!ev.target.classList.contains(clickClass)) {
  return;
 }

 ev.dataTransfer.setData("text", ev.target.id);
 document.getElementById(ev.target.id).parentElement.setAttribute('class', 'noclick');
};

我读到了一个不同的问题,如果数据没有被传输,拖动事件可能不会在Firefox中触发,然而,这似乎不是问题所在。

EN

回答 2

Stack Overflow用户

发布于 2016-12-31 10:03:18

您应该添加dragstart侦听器,而不是imgElement.setAttribute('ondragstart', 'drag(event)');

代码语言:javascript
复制
imgElement.addEventListener('dragstart', function(e){
    drag(e);
});
票数 2
EN

Stack Overflow用户

发布于 2018-09-02 05:27:34

似乎在火狐中,至少在v61中,将draggable属性设置为false,而不是true,会给你带来想要的结果--允许图像随着鼠标的移动而拖动。

代码语言:javascript
复制
element.setAttribute('draggable', false);

可能Firefox假设它会处理图像的拖动,除非您明确地将一个属性设置为false,在这种情况下,您可以使用自己的js处理程序来移动图像。

而且,一旦发生初始移动并释放鼠标按钮,火狐似乎就会默认地将该属性重置为true。必须将draggable属性重置回false,才能重新启动该过程。但是,这应该不是问题,因为您可能正在处理该图像的所有鼠标事件,并且可以很容易地插入一行代码,以确保在需要时拖动是false

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41404762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档