我该怎么做才能使我的网站上的Javascript代码与Firefox一起使用

时间:2013-07-07 05:13:49

标签: javascript jquery html firefox compatibility

我的网站 - 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)”转到上面的链接,你会找到使用鼠标位置的方法。

1 个答案:

答案 0 :(得分: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();
}