您正在尝试访问不存在的事件对象的属性。
您在两个地方手动调用该函数,因此不会创建事件:
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();
}