0

リファラーURLが製品テーブルのURLと一致するかどうかを検出するために、次のJavaScriptを作成しました。次に、ページを下にスクロールして関連する製品を表示します。実際のスクロール部分は正しく機能します。問題はifステートメントにあります。

$("tr td:first").each(function(){
    var product_href = $(this).find("td a:eq(0)");
    if(product_href.length && document.referrer.indexOf(product_href.attr("href")) == 1){
        $(this).scrollTo({
            easing: 'easeOutQuad',
            offsetTop: -40,
            target: $(this)
        }).click(); 
    }
});

alert(document.referrer + ' | ' + product_href.attr("href"));IFステートメントの上に追加すると、次のようになります。

http://localhost/product/product-uri | /product/product-uri

プラグインまでスクロール

$.fn.scrollTo = function(options) {
    var defaults = {
        target : false, 
        speed  : 400,
        easing: 'swing',
        offsetTop: -20,
        offsetLeft: 0
    };
    var opts = $.extend({}, defaults, options);
    if(this.length > 0){
        var elem = this;
        // Element instance specific actions
        $(elem).each(function() {
            var dis = $(this);
            var settings = $.meta ? $.extend({}, opts, dis.data()) : opts;
            var url = $(dis).attr("href");
            var anchor = '';
            if(url && url.indexOf("#") != -1 && url.indexOf("#") == 0) {
                anchor = $(this.hash);
            } else
                anchor = $(settings.target);

            $(dis).bind('click', function(){
                $('html, body').animate({
                    scrollTop: (anchor.offset().top + parseInt(settings.offsetTop,10)),
                    scrollLeft: (anchor.offset().left + parseInt(settings.offsetLeft,10))
                }, settings.speed, settings.easing);
            });
        });
    }
    return this;
};
4

1 に答える 1

1

変更してみてください:

document.referrer.indexOf(product_href.attr("href")) == 1)

に:

document.referrer.indexOf(product_href.attr("href")) !== -1)

製品がリファラー文字列のどこかに存在することをテストする必要があります。製品が存在し、リファラー文字列の2番目の文字(0ベースのインデックス)で始まることではありません。

于 2012-08-22T22:54:23.557 に答える