- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在开始使用以下函数处理项目之前,我正在尝试检查以确保该项目可见
isVisible: function (node, doc, x, y) {
var el = doc.elementFromPoint(x, y);
if (node === el) return true;
else return false;
},
x
和 y
是所选节点的位置,计算公式为
findPos: function (node) {
var pos = new Object();
pos.left = pos.top = 0;
if (node.offsetParent) {
do {
pos.left += node.offsetLeft;
pos.top += node.offsetTop;
} while (node = node.offsetParent);
}
return pos;
}
一切正常。但是,当我向下滚动页面时,isVisible
函数不再返回正确的值。这是由于位置已更改但查找位置函数未返回正确的值造成的。
是否有一种方法可以像 elementFromPoint
的相反那样获取元素的位置?或者有人有其他方法吗?
最佳答案
我刚刚编写了一个 isVisible()
方法,该方法使用 elementFromPoint()
方法,并且应该在 IE9+ 中工作以检测元素是否可见。
var isVisible = function(elem) {
var w = window, d = document, height, rects, on_top;
if(!elem || (elem && elem.nodeType !== 1) || !elem.getClientRects || !d.elementFromPoint || !d.querySelector || !elem.contains) {
return false;
}
if (elem.offsetWidth === 0 || elem.offsetHeight === 0) {
return false;
}
height = w.innerHeight ? w.innerHeight: d.documentElement.clientHeight;
rects = elem.getClientRects();
on_top = function(r, elem) {
var x = (r.left + r.right)/2,
y = (r.top + r.bottom)/2,
elemFromPoint = d.elementFromPoint(x, y);
return (elemFromPoint === elem || elem.contains(elemFromPoint));
};
for (var i = 0, l = rects.length; i < l; i++) {
var r = rects[i],
in_viewport = r.top > 0 ? r.top <= height : (r.bottom > 0 && r.bottom <= height);
if (in_viewport && on_top(r, elem)) {
return true;
}
}
return false;
};
您可以这样调用它:isVisible(document.getElementById('at-follow'));
此外,这是 gist其中。
关于javascript - 使用 elementFromPoint() 方法检查元素可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174787/
我正在使用 jquery/javascript 开发这个拖放应用程序,我必须平衡两者来完成我想要的。 var drop = document.elementFromPoint($(this).offs
问题是我试图通过使用 jquery 使用元素的位置来获取元素的 id,并且我只找到了 document.elementFromPoint() 方法,但是此方法通过元素相对于文档的位置来获取元素。 我想
在开始使用以下函数处理项目之前,我正在尝试检查以确保该项目可见 isVisible: function (node, doc, x, y) { var el = doc.elementFrom
我需要一些使用 elementFromPoint 的帮助,如何检索 div 的类? id 给出了年份,tagName 给出了 div。有没有人可以上课? 谢谢 最佳答案 捕获元素,看看它的 clas
我在一个项目中使用 document.elementFromPoint,它看起来很慢。 100,000 次迭代需要 7051 毫秒。 document.getElementsByTagName("*"
在 UIWebView 中,当我长按它时,我需要访问 DOM 元素的属性(从 SVG 图形)。为此,我添加了一个 UILongPressGestureRecognizer,如下所示: UILongPr
我有一种情况,其中有两层元素使用相对和绝对定位定位在另一层之上: 我使用顶层(第 1 层)触发 mousemove 事件,以便在其他层上创建交互 - 当鼠标移动到第 1
我有一个 SVG包含多个 PATH 的 map 对象。该 map 上有一个叠加图像,所以每当我想在 map 上调用某个事件时,我必须使用 elementFromPoint .我的函数的结构有点像这样:
我有一个 javascript 小书签,我把它放在一起,让一项艰巨的任务变得更容易忍受。本质上,我正在浏览数百页的培训 Material ,并确保所有内容都已从 Helvetica 正确转换为 Ari
我正在做一个测试项目。我正在尝试使用 document.elementFromPoint(x, y) 来获取用于测试的元素。但是,我有一个用例,我不希望使用 elementFromPoint 找到某些
有没有办法从函数 elementFromPoint(x, y) 返回的元素/对象中检索子元素; 假设我有如下语句, var elem = document.elementFromPoint(x, y)
有没有像 document.elementFromPoint Javascript 方法一样返回最靠近窗口中指定点的元素的 jQuery 方法? 最佳答案 如果您打算使用 vanilla JS 函数,
我有坐标。我想检查这些坐标处是否存在具有特定类的元素。我该怎么做? 我尝试了以下代码(这是一个jsfiddle:https://jsfiddle.net/0o160f5g/2/): HTML: CS
我需要从 UIWebView 中选择一些文本。我引用了这个答案Getting selected elements programatically from uiwebview?但是当我使用点击它选择文
UIWebView 在其私有(private) UIBrowserView 上有一个“假 header ”,即 webView.scrollView.subviews[0]。当我使用 js 时elem
在 document.elementFromPoint 的文档中它指出: Returns the element from the document whose elementFromPoint me
我使用以下代码来获取所选文本的位置: var text = window.getSelection(); start = text.anchorOffset; end = text.focusOffs
对于我的网站,我希望用户能够点击各种 svg 元素。 我编写了一个快速函数,让用户可以点击封闭的形状。我基本上只是在它们上运行 document.elementFromPoint(x, y)。这适用于
According to this answer ,我应该能够获取元素“放置”发生的元素。然而,它报告的结果非常奇怪和随机,这些结果似乎总是父元素,而不是拖动元素放置在其上的实际子元素。 Here's
我正在尝试创建一个 jQuery 脚本来查找所需元素在给定坐标处是否可见(未对其他元素隐藏)。 为了这个目标,我尝试使用 document.elementFromPoint 函数,但它似乎不起作用(请
我是一名优秀的程序员,十分优秀!