是否有类似于document.elementFromPoint(x,y)的元素在视口之外工作?Javascript获取元素在视口外点
根据该MDN文档为document.elementFromPoint()(https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint)
如果指定点是文档 的可见边界之外或任一坐标是负的,则结果为空。
因此,如果您试图抓取用户视口之外的元素,显然它不起作用。
谢谢!
是否有类似于document.elementFromPoint(x,y)的元素在视口之外工作?Javascript获取元素在视口外点
根据该MDN文档为document.elementFromPoint()(https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint)
如果指定点是文档 的可见边界之外或任一坐标是负的,则结果为空。
因此,如果您试图抓取用户视口之外的元素,显然它不起作用。
谢谢!
嘿我有同样的问题,如果元素不在视口的当前范围内elementFromPoint
将返回null
。
我发现你必须滚动到元素位置才能使它在视口中可见,然后执行elementFromPoint
。
(function() {
'use strict';
var api;
api = function(x,y) {
var elm, scrollX, scrollY, newX, newY;
/* Stash current Window Scroll */
scrollX = window.pageXOffset;
scrollY = window.pageYOffset;
/* Scroll to element */
window.scrollTo(x,y);
/* Calculate new relative element coordinates */
newX = x - window.pageXOffset;
newY = y - window.pageYOffset;
/* Grab the element */
elm = this.elementFromPoint(newX,newY);
/* revert to the previous scroll location */
window.scrollTo(scrollX,scrollY);
/* returned the grabbed element at the absolute coordinates */
return elm;
};
this.document.elementFromAbsolutePoint = api;
}).call(this);
您可以简单地使用当过坐标是从pageX
,pageY
绝对命令。
document.elementFromAbsoultePoint(2084, 1536);
此代码也在GitHub上打包到一个bower组件中,以便于包含到项目中。
https://github.com/kylewelsby/element-from-absolute-point
希望这有助于你的项目。
真棒,谢谢 - 这正是什么我在寻找。 – nickb
此功能请求被提交为https://www.w3.org/Bugs/Public/show_bug.cgi?id=20328(虽然没有5年的活动..) – Nickolay