リファラー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;
};