Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:未触发mousemove事件处理程序_Javascript_Html_Css_Internet Explorer 8 - Fatal编程技术网

Javascript:未触发mousemove事件处理程序

Javascript:未触发mousemove事件处理程序,javascript,html,css,internet-explorer-8,Javascript,Html,Css,Internet Explorer 8,我正在开发一套必须在IE8中可以访问的电子学习模块(由于组织中的遗留硬件) 在IE9>中一切正常。在IE8中,mouseover事件处理程序没有触发。以下是相关的js: $(document).ready(function() { $imageOptions = $('.multi-choice-image-container'); $imageOptions.each(function() { $(this).hover(addHover, removeHove

我正在开发一套必须在IE8中可以访问的电子学习模块(由于组织中的遗留硬件)

在IE9>中一切正常。在IE8中,mouseover事件处理程序没有触发。以下是相关的js:

$(document).ready(function() {
    $imageOptions = $('.multi-choice-image-container');
    $imageOptions.each(function() {
        $(this).hover(addHover, removeHover);
    })
});

function addHover(ev) {
    ev = ev || window.event;
    // add conditional class
    var $image;
    if (ev.target.tagName=="IMG") {
        $image = $(ev.target).parent(); // if event has been triggered from image as opposed to the containing div, get the parent object
    } else {
        $image = $(ev.target);
    }
    if (!$image.hasClass('hover-magnification')) {
        $image.addClass('hover-magnification');
        $hoveredImageContainer = $image;
        hoveredImageRect = $hoveredImageContainer[0].getBoundingClientRect();
        var hoveredImageRectWidth = hoveredImageRect.right - hoveredImageRect.left;
        var hoveredImageRectHeight = hoveredImageRect.bottom - hoveredImageRect.top;
        hoveredXMultiplier = (400 - hoveredImageRectWidth) / hoveredImageRectWidth;
        hoveredYMultiplier = (800 - hoveredImageRectHeight) / hoveredImageRectHeight;
        $hoveredImage = $hoveredImageContainer.find('.multi-choice-image');
    }
    if (document.body.addEventListener) {
        document.body.addEventListener('mousemove', mouseMoveHandler);
    } else {
        document.body.attachEvent('mousemove', mouseMoveHandler);
    }
}

function removeHover(ev) {
    ev = ev || window.event;
    var $image;
    if (ev.target.tagName=="IMG") {
        $image = $(ev.target).parent();
    } else {
        $image = $(ev.target);
    }
    $image.removeClass('hover-magnification');
    if (document.body.removeEventListener) {
        document.body.removeEventListener('mousemove', mouseMoveHandler);
    } else {
        document.body.detachEvent('mousemove', mouseMoveHandler);
    }
    $hoveredImageContainer = null;
}

function mouseMoveHandler(ev) {
    console.log("this function is not firing");
    ev = ev || window.event;
    if ($hoveredImageContainer!=null) {
        var scroll = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
        var xPos = ev.pageX - hoveredImageRect.left;
        var yPos = ev.pageY - (hoveredImageRect.top+scroll);
        $hoveredImage.css('left', -((xPos) * hoveredXMultiplier) +'px').css('top', -((yPos) * hoveredYMultiplier) + 'px');
    }
}
还有一些非常简化的html(显然,图像URL发生了改变):

我加入了添加js行的类,因为我可以看到这些行正在被应用——所包含图像的类会发生变化,并缩放到完整大小。mouseMoveHandler函数不会被触发,因此图像不会根据鼠标位置调整其位置


好的,我的简单问题是,毕竟这是为什么mousemove处理程序在IE8中没有触发?(它在9+和其他浏览器中运行良好)。

正常。对于有相同问题的人来说,IE8需要触发“onmousemove”,而不是触发“mousemove”。因此:

if (document.body.addEventListener) {
    document.body.addEventListener('mousemove', mouseMoveHandler);
} else {
    document.body.attachEvent('onmousemove', mouseMoveHandler);
}

嗯。对于有相同问题的人来说,IE8需要触发“onmousemove”,而不是触发“mousemove”。因此:

if (document.body.addEventListener) {
    document.body.addEventListener('mousemove', mouseMoveHandler);
} else {
    document.body.attachEvent('onmousemove', mouseMoveHandler);
}

mousemouse
mouseover
mousemove
都是不同的东西,您已经键入了这三个。代码的其他部分是否有输入错误?以防万一。我只在代码中看到
mousemove
。对不起!拼写错误更正(我希望如此),是的,我有doctype声明。我不想包括整个html页面,因为它很长,我不想让人们不去阅读!没必要道歉。事实上,我希望抓到一个打字错误可以解决你的问题:)
mousemouse
mouseover
mousemove
都是不同的东西,你已经输入了这三个。代码的其他部分是否有输入错误?以防万一。我只在代码中看到
mousemove
。对不起!拼写错误更正(我希望如此),是的,我有doctype声明。我不想包括整个html页面,因为它很长,我不想让人们不去阅读!没必要道歉。事实上,我希望抓到一个打字错误可以解决你的问题:)
if (document.body.addEventListener) {
    document.body.addEventListener('mousemove', mouseMoveHandler);
} else {
    document.body.attachEvent('onmousemove', mouseMoveHandler);
}