0

我有一个带边框的 div,在它的右下角我有用于调整大小的图像:

在此处输入图像描述

因此,当用户在图像上按下鼠标时,他(或她)可以拖动鼠标并调整 div 的大小。

这在除 FireFox 之外的所有浏览器中都可以正常工作。

在 FireFox 中发生了一些奇怪的事情:用户按下鼠标并开始拖动后,光标变为:

在此处输入图像描述

因此,当鼠标被拖动时,光标变为这个并且鼠标移动事件不会到来。

我想知道,是什么导致了这种行为。我想也许 FireFox 认为用户试图通过按下和拖动鼠标来选择文本。但是我使用以下代码取消了文本选择:

resizeImageImg.onselectstart          = "return false;";
resizeImageImg.ondragstart            = "return false;";

resizeImageImg.style.WebkitUserSelect = 'none';
resizeImageImg.style.KhtmlUserSelect  = 'none';
resizeImageImg.style.MozUserSelect    = 'none';
resizeImageImg.style.MsUserSelect     = 'none';
resizeImageImg.style.OUserSelect      = 'none';
resizeImageImg.style.UserSelect       = 'none';

resizeImageImg.setAttribute ("unselectable", "on");
resizeImageImg.setAttribute ("draggable",    "false");

(对于两者: div 和调整大小的图像)

但这并没有解决问题。FireFox 仍然不允许调整大小并将光标更改为“不允许”。

有人可以帮忙吗?

4

2 回答 2

1

谢谢大家,我找到了解决方案。

我更换了:

resizeImageImg.ondragstar = "return false;"; 

经过

resizeImageImg.ondragstart = function () { return false; };

它也开始在 FireFox 中工作。

这里发生的情况是,如果您想在鼠标按下事件来自图像时处理鼠标移动事件,那么您必须使图像不可拖动。但这还不够用

resizeImageImg.setAttribute ("draggable", false);

(至少在 FireFox 中)因为 ondragstart 事件仍在发生。当我设置时,我明白了这一点:

resizeImageImg.ondragstart = function () { alert ("ondragstart"); return false; };

所以我意识到 FireFox 不服从 setAttribute ("draggable", false) - 而其他浏览器则服从。

于 2012-02-01T14:03:51.383 回答
0

安迪,这是我想出的解决方案。我已经付出了巨大的努力使其快速且易于使用。

您可以在此处查看文件:http: //files.social-library.org/stackoverflow/imageResizer.html

使用简单。创建图像并指定宽度和高度。然后,一旦页面加载调用函数 imageResizer.init(imageObject) 发送图像对象作为参数。然后它将使用拖动器设置图像。

这适用于 firefox、chrome 和 internet explorer 8+。

于 2012-01-31T19:49:01.347 回答