0

我的网站 - http://wsareviews.comuf.com - 在 Firefox 上根本不起作用。它在 Chrome 和 Safari 上运行良好,主要在 IE 10 上运行。显然它与使用事件事物的 alignIcons 方法有关。

http://wsareviews.comuf.com/scripts.js

我应该使用 jQuery 吗?如果是这样,我可以使用 jQuery 来获取鼠标位置并将其放回 Javascript 中吗?顺便说一句,我根本没有使用 jQuery 的经验。它是一个学校项目,我希望它可以在尽可能多的浏览器中工作,除了旧的 IE。

编辑:到目前为止,我使用 JS 来获取鼠标位置,仅此而已。我只是想要一种使用 jQuery 获取鼠标位置并将其提供给我已经编写的 javascript 代码的方法。如果您使用 js 文件和 ctrl+f "function alignIcons(e)" 转到上面的链接,您将找到使用鼠标位置的方法。

4

1 回答 1

1

您正在尝试访问不存在的事件对象的属性。

您在两个地方手动调用该函数,因此不会创建事件:

function imageLoaded() {
    imageLoadCount++;
    if (imageLoadCount == numberOfImagesToLoad) {
        alignIcons();
        document.onmousemove = alignIcons;
        cancelLoadingFadeIn = true;
        setTimeout(hideSpinners, 500);
    }
}

function fadeIn() {
    document.getElementById("iconDiv").style.opacity = parseFloat(document.getElementById("iconDiv").style.opacity, 10) + 0.01;
    if (parseFloat(document.getElementById("iconDiv").style.opacity, 10) < 1.0) {
        setTimeout(fadeIn, 1000 / 60);
    } else {
        alignIcons();
    }
}

您应该检查 window.event 是否返回任何内容if (!(e && e.clientX))。看起来 Chrome 只是半忽略它(它会引发错误),但会继续。

function alignIcons(e) {
    document.getElementById("iconDiv").style.height = window.innerHeight - 15 + "px";
    iconWindowWidth = document.getElementById("iconDiv").offsetWidth;
    iconWindowHeight = document.getElementById("iconDiv").offsetHeight;

    if (!e) {
        e = window.event;
        if (!(e && e.clientX)) {
            e = {
                clientX: iconWindowWidth / 2,
                clientY: iconWindowHeight / 2
            };
        }
    }

    mouseX = e.clientX + document.body.scrollLeft;
    mouseY = e.clientY + document.body.scrollLeft;
    alignPopupToCentre();
    setXPositions();
    setYPositions();
    setOpacities();
}
于 2013-07-07T05:30:29.140 回答