本文介绍了我们应该为layerX / layerY使用什么替代品,因为它们在webkit中已被弃用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在chrome canary中,不推荐使用layerX和layerY,但我们应该使用什么呢?

In chrome canary, layerX and layerY are deprecated, but what should we use instead ?

我找到了offsetX但它不适用于Firefox。所以为了在webkit上没有警告的情况下获得layerX,我已经这样做了:

I've find offsetX but it doesn't work with Firefox. So to get layerX without warning on webkit, I've done that :

var x = evt.offsetX || evt.layerX,
    y = evt.offsetY || evt.layerY;

但这看起来相当复杂!我们应该怎么做才能让layerX在所有浏览器中运行?

But this seem quite complex ! Is that really what we should do to get layerX working in all browsers ?

推荐答案

这是一个从中计算layerX和layerY的函数点击事件:

Here is a function to calculate layerX and layerY from a click event:

function getOffset(evt) {
  var el = evt.target,
      x = 0,
      y = 0;

  while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {
    x += el.offsetLeft - el.scrollLeft;
    y += el.offsetTop - el.scrollTop;
    el = el.offsetParent;
  }

  x = evt.clientX - x;
  y = evt.clientY - y;

  return { x: x, y: y };
}

非常感谢Stu Cox指出用于制作此功能的两个功能一个。

Thanks a lot to Stu Cox for pointing out the two functions used to make this one.

这篇关于我们应该为layerX / layerY使用什么替代品,因为它们在webkit中已被弃用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 17:17