Why Firefox event.offsetX and offsetY are undefined?
我偶然发现我的软件中的一个错误仅在Firefox上发生。 原因是该事件未定义offsetX和offsetY。
由于这个原因,我设法修复了它。
无论如何,我的问题不是编程帮助请求。 我很好奇为什么Firefox中未定义这些属性? 背后的原因是什么?
我确实浏览过:DOM3 UIEvent规范,DOM3 MouseEvent规范。 和DOM2 MouseEvent规范。
似乎这里没有提到任何属性,因此,我想这是其他浏览器中引入的非官方属性吗?
尽管在W3规范中提到了
尽管在IE,Webkit浏览器和Opera中受支持,但它们的功能都与规范要求略有不同,但IE除外-根据此处的"计算offsetX,offsetY"部分。
Firefox完全不支持这些属性-它似乎是一个长期存在的错误,尚待解决。
"I suppose that's an unofficial property introduced in other
browsers?"
我相信这是官方财产,Firefox尚未实现。 如果它是非官方的IE属性,则不会在W3规范中提到的Webkit / Opera浏览器中实现,也不会由Firefox实际尝试实现(请查看上面的错误链接)。
Firefox中的offsetX和offsetY不一致,因此您可以这样做
1 2 3 4 5 6 7 8 9 10 | document.body.onclick = function(e) { e = e || window.event; var target = e.target || e.srcElement, rect = target.getBoundingClientRect(), offsetX = e.clientX - rect.left, offsetY = e.clientY - rect.top; console.log([offsetX, offsetY]); }; |
您可以在这里和这里找到更多信息