0

ユーザーがクリックした Y 軸上のどこかにある Cookie から値を回復しようとしています。次に、そのクリックから親を見つけたいと思い<h2>ます(それが役立つ場合、すべての<h2>s は a の最初の子です<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 軸の高さが数千ピクセルであるため、良くありません。

どんなアイデアでも大歓迎です!!!

4

1 に答える 1

0

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

それとも、私はあなたを誤解しましたか?

于 2012-07-20T12:31:10.270 に答える