【问题标题】:pageX pageY not working in IE8 if i add <!DOCTYPE html>如果我添加 <!DOCTYPE html>,pageX pageY 在 IE8 中不起作用
【发布时间】:2016-08-24 11:11:01
【问题描述】:

嘿,伙计们,我有以下脚本,当我移动鼠标时,它会为我提供光标位置。 此脚本在 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);
    }

【问题讨论】:

  • AFAIK,对于 9 以下的 IE,您应该使用 clientX/clientYstackoverflow.com/questions/11042275/…
  • 这个链接帮助了我 stackoverflow.com/questions/6307307/…> 非常感谢大家!!

标签: javascript html internet-explorer-8


【解决方案1】:

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

你考虑过改用 jQuery 吗?它将具有实现相同目标所需的所有功能。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      并使用 W3C 作为默认 API 通过惰性评估进行切换:

       clientX || (pageX - pageXOffset);  
      

      参考文献

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-18
        • 1970-01-01
        相关资源
        最近更新 更多