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