elementFromPoint()完整文档备选方案
elementFromPoint() full document alternative
我正试图从cookie中恢复一个值,该cookie位于用户单击的Y轴上的某个位置。然后,我想通过单击找到父<h2>
(如果有帮助的话,所有的<h2>
都是<div class="_bdnable_">
的第一个子)。以下是我目前所拥有的:
var bookmarkLocation;
function getBookmarkPos() {
if ($.cookie("bookmark-position") !== null) {
$(".bdnable").each(function(i) {
var scrollTopTop = $(this).offset.top;
var scrollTopBottom = $(this).offset.top + $(this).height();
// var screenWidth = parseInt(screen.width/2);
// alert(screenWidth);
// var bookmarkPosition = parseInt($.cookie("bookmark-position"));
// alert(bookmarkPosition);
// var query = document.elementFromPoint(screenWidth, 50).nodeName;
// alert(query);
if ($.cookie("bookmark-position")>=scrollTopTop && $.cookie("bookmark-position")<=scrollTopBottom) {
bookmarkLocation = $(this).closest("div").children(":nth-child(1)").text();
}
});
if (bookmarkLocation == null) {
bookmarkLocation = "Unknown";
}
} else {
bookmarkLocation = "No bookmark set";
}
$("#bookmarklocationspan").html(bookmarkLocation);
}
在注释掉的部分,我尝试使用getElementFromPoint,然后意识到它只检查可见区域。不好,因为页面上可滚动的Y轴有1000像素高。
任何想法都将不胜感激!!!
如果您已经从cookie中获得了点击的y坐标,为什么不简单地比较所有H2的y位置,然后选择下一个"更高"的位置呢?你的方法看起来像是比较用户是否直接点击了H2,而不是它下面的文章/按钮?
只是一个想法——不要评价它的风格,想想它漂亮凌乱:
var $myH2 = $('h2');
var clickY = <COOKIE_VALUE>;
var currentY = 0;
var foundH2ID = '';
for (var i = 0; i < $myH2.length; i++) {
var h2Y = $($myH2[i]).position().top;
if (h2Y <= clickY && h2Y > currentY) {
currentY = h2Y;
foundH2ID = $myH2[i].id;
}
}
或者我误会你了?
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 寻找基于jsdoc的自动API文档维基解决方案
- elementFromPoint()完整文档备选方案
- 避免文档.write?任何替代方案
- 文档的简单替代方案
- 设计一个比使用AJAX获得整个HTML文档更好的解决方案
- 如何使用来自浏览器的证书私钥对文档进行签名(CAPICOM替代方案)
- 解决方案文档.write函数
- 文档.execCommand复制命令不工作或其他解决方案
- 如果一个文档准备失败,jQuery所有文档准备都失败.解决方案