2012-07-20 94 views
0

我想從cookie中恢復一個值,該cookie位於用戶單擊的Y軸上的某個位置。然後我想從該點擊中找到父親<h2>(如果有幫助,所有<h2>都是<div class="_bdnable_">的第一個孩子)。以下是我迄今爲止:elementFromPoint()完整文檔替代

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像素高。

任何想法都非常感謝!

+0

你可以添加標記嗎? – Tjkoopa 2012-07-20 12:08:15

回答

0

如果你已經有了cookie的點擊的y座標,爲什麼不簡單比較所有H2的y位置並選擇下一個「更高」的位置?你的方法看起來像是比較用戶是否直接點擊H2而不是下面的文章/按鈕?

只是一個想法 - 不評分的風格,認爲其prettey凌亂:

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; 
} 
} 

或者,也許我把你錯了嗎?

+0

需要調整,但Mille Mercis !!!! – Walendas 2012-07-20 12:38:49

+0

不客氣!當然,您可以自由修改代碼:-) – OlafW 2012-07-20 13:16:22