IE9鼠标按下期间mousemove事件不触发

4
当我左键点击并拖动鼠标时,IE9不能识别mousemove事件。我需要知道鼠标在被按下的状态下移动时所处的位置。
其他浏览器都很好用。
以下是我的代码核心:
<html>
<head>
<title>IE9 Failure</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<div id="imgDiv"><img src="http://upload.wikimedia.org/wikipedia/en/1/1e/C.s.lewis3.JPG" alt="C.S. Lewis" /></div>
<div id="logger"></div>

<script>
$('#imgDiv').mousemove(displayMouseXYPos);
$('img').mousedown(function(event)
{
event.preventDefault();
});
var i = 0;
function displayMouseXYPos(e)
{
if (!e) var e = window.event; 
var x = e.clientX + document.body.scrollLeft;
var y = e.clientY + document.body.scrollTop;
i++;
$('#logger').html(i + ') ' + x + ',' + y);
}
</script>
</body>
</html>

只需单击并拖动鼠标到图像上。在Chrome、FF、Safari、Opera等浏览器中观察“logger”div中的数据读取。然后在IE9中检查它。如何使IE9的行为像其他浏览器一样?

非常感谢!


1
我在我的电脑上没有发现任何问题:http://jsfiddle.net/P5m7d/ - Adam Terlson
我正在使用Win7。在非IE浏览器中,当我点击并拖动图像时,x和y坐标(如日志记录器div中所示)会不断变化。但是在IE9中,它们根本不会改变。 - gcdev
在 jsfiddle 上,代码似乎在 IE9 中也能正常工作。但是如果使用上面的代码创建一个普通的 HTML 文档并在 IE9 中打开它,则无法正常工作。 - gcdev
这对我来说也很好用,在 Quirks 和 IE9 标准文档模式下都可以。 - Adam Terlson
这是<!DOCTYPE html>标签。有点奇怪。感谢指引我去jsFiddle,Adam。我在那里查看源代码以解决问题。 - gcdev
2个回答

0

我在我的电脑上测试了您的代码,并打开了兼容模式,发现了您描述的问题。您的浏览器可能已经开启了兼容性模式。

请在您的页面中添加以下元标记,以告诉IE使用最新的渲染器版本进行渲染:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

这个标签还会禁用用户为任何添加了它的页面打开兼容模式。从而防止他们无意中导致页面崩溃。


0
我在HTML代码的顶部添加了DOCTYPE标签,问题得到解决:
<!DOCTYPE html>
<html>
<head>
<title>IE9 Failure</title>
...

感谢所有为此做出贡献的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接