如果我添加,pageX pageY在IE8中不起作用

时间:2013-11-28 18:33:28

标签: javascript html internet-explorer-8

嘿伙计们,我有以下脚本,当我移动鼠标时,它给我光标位置。 这个脚本在chrome,FF甚至IE 8中运行良好(没有!doctype html

如果将!DOCTYPE html 添加到html页面。 它给了我对象不支持此属性错误。并且下面给出的行引起了问题

document.captureEvents(Event.MOUSEMOVE);

如何使用IE 8中包含的!DOCTYPE html 解决此问题。

window.onload = init;
    function init() {
   if (window.Event) {
    document.captureEvents(Event.MOUSEMOVE);
   }
  document.onmousemove = getCursorXY;
    }

  function getCursorXY(e) {
      document.getElementById('cursorX').value = (window.Event) ? e.pageX :   
         event.clientX + (document.documentElement.scrollLeft ?    
       document.documentElement.scrollLeft : document.body.scrollLeft);
     document.getElementById('cursorY').value = (window.Event) ? e.pageY : event.clientY  
   + (document.documentElement.scrollTop ? document.documentElement.scrollTop :    
    document.body.scrollTop);
    }

3 个答案:

答案 0 :(得分:1)

我假设您收到错误,因为<!DOCTYPE html>是HTML5的声明,而IE 8将无法处理HTML5。

您是否考虑过切换到jQuery?它将具备实现相同功能所需的所有功能。

答案 1 :(得分:0)

是的,IE9不支持。 您可以从此链接检查这些兼容性问题。 http://quirksmode.org/compatibility.html

答案 2 :(得分:-1)

使用等同于W3C DOM事件的IE DOM事件:

W3C DOM                   IE DOM
clientX                   (pageX - pageXOffset)
clientY                   (pageY - pageYOffset)
offsetX                   pageXOffset
offsetY                   pageYOffset

使用W3C作为默认API,通过延迟评估进行切换:

 clientX || (pageX - pageXOffset);  

<强>参考