0

我编写了以下 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)

您想测试产品是否存在于引荐来源网址字符串中的任何位置,而不是产品是否存在并从引荐来源网址字符串的第二个字符(基于 0 的索引)开始。

于 2012-08-22T22:54:23.557 回答