我正在建立这个网站,我被要求让摄影师的图像随机调整大小、排序和定位,并能够单击并拖动它们。除了这个主要问题之外,所有这一切都进行得很顺利。
尽管在 Firefox 中一切正常,但在 Chrome 或 Safari(可能是其他浏览器)中打开时,立即加载时在窗口中不可见的任何图像在您尝试拖动时似乎会消失。如果您在它“消失”后向上滚动,您会注意到图像实际上被发送到页面顶部,同时仍然跟随您的单击和拖动动作。
我以前遇到过这个错误,我相信它是通过删除一些不再需要的 javascript 来解决的。但是这次我似乎已经尝试了删除某些 JS 或链接到 jQuery 库的所有组合,但仍然找不到解决方法。
任何人都知道如何解决这个问题?
您可以在此处查看问题和我的代码:http: //www.coreytegeler.com/jb/oddfuture/
EDIT似乎完全依赖于 Draggable 功能。我删除了除以下之外的所有 JavaScript 代码,但问题仍然存在
$(function() {
$( ".vert" ).draggable();
$( ".horiz" ).draggable();
});
编辑这看起来与问题有关
var imgInit_x, imgInit_y, mouseInit_x, mouseInit_y, elem;
document.addEventListener('mousedown', startDrag, false);
document.addEventListener('mousedown', drag, false);
document.addEventListener('mousedown', endDrag, false);
function startDrag(e)
{
if (e.target.tagName.toUpperCase == "IMG")
{
elem = e.target;
imgInit_x = elem.style.left;
imgInit_y = elem.style.top;
mouseInit_x = e.layerX || e.offsetX;
mouseInit_y = e.layerX || e.offsetX;
}
}
function drag(e)
{
try
{
currMouse_x = e.layerX || e.offsetX;
currMouse_y = e.layerY || e.offsetY;
elem.style.left = imgInit_x + currMouse_x - mouseInit_x;
elem.style.top = imgInit_y + currMouse_y - mouseInit_y;
}
catch (err){}
}
function endDrag(e)
{
elem = null;
}