Created
February 4, 2017 13:50
-
-
Save lacucaracha-jp/ae1b2a46191e4b3d28df4421a7fc935a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script> | |
if(typeof jQuery != 'undefined'){ | |
jQuery(document).ready(function($){ | |
/* ----------------------------------------------------------------- */ | |
// スクロール量の計測 | |
/* ----------------------------------------------------------------- */ | |
$(function(){ | |
/* ----------------------------------------------------------------- */ | |
// 設定変更箇所 | |
/* ----------------------------------------------------------------- */ | |
// 計測のタイプ | |
// AreaPer: ページの高さに対するパーセンテージで指定 | |
// AreaElms: タグ名・Class名・ID名で指定 | |
var ga_slAreaType = "AreaElms"; // AreaPer or AreaElms | |
// AreaPerの場合のパーセント(10%なら0.1と指定。何個でも指定可能) | |
var ga_slAreaPer = new Array("0.1","0.2","0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1.0"); | |
// AreaNumの場合の区切りとなる要素(jQueryのセレクタの記述ルールで指定。何個でも指定可能) | |
var ga_slAreaElms = [ | |
'h3','.entry-footer' | |
]; | |
// 固定のピクセル数で計測 | |
// AreaPer・AreaElmsのどちらでも計測される。 | |
// ファーストビューから少しでもスクロールしたかどうかを計測する。 | |
var ga_slPointFixed = 150; // デフォルトは150px | |
/* ----------------------------------------------------------------- */ | |
// 計測完了フラグ | |
var ga_slCmpFixed; | |
var ga_slCmp = new Array; | |
var ga_slCmpElms = new Array; | |
// 高さ・閾値関連 | |
var ga_pg_h; // ページの高さ | |
var ga_win_h; // ウィンドウの高さ | |
var ga_slAreaSep; // エリアの閾値(配列) | |
var ga_slLabel; // イベントのラベル | |
var ga_slAreaSepElms; // エリアの閾値(配列) | |
var ga_slLabelElms; // イベントのラベル | |
function getHeight(){ | |
// ページとウィンドウの高さを取得 | |
ga_pg_h = $(document).height(); | |
if(document.all){ | |
ga_win_h = document.documentElement.clientHeight; | |
}else{ | |
ga_win_h = window.innerHeight; | |
} | |
// 閾値の設定 | |
ga_slAreaSep = []; | |
ga_slLabel = []; | |
ga_slAreaSepElms = []; | |
ga_slLabelElms = []; | |
var ga_slLabelnum = 1 | |
var ga_slLabelnumElms = 1 | |
var tagText = "" | |
for(var i = 0; i < ga_slAreaPer.length; i++){ | |
ga_slAreaSep[i] = (ga_pg_h - ga_win_h) * ga_slAreaPer[i]; | |
ga_slLabel[i] = ga_slAreaPer[i] * 100} | |
for(var i = 0; i < ga_slAreaElms.length; i++){ | |
$(ga_slAreaElms[i]).each(function(){ | |
ga_slAreaSepElms.push($(this).offset().top - ga_win_h); | |
tagText = $('h3').eq(ga_slLabelnumElms-1).text(); | |
if(!tagText){ | |
tagText = "End"; | |
}else{ | |
tagText = ga_slLabelnumElms + "_" + tagText; | |
} | |
ga_slLabelElms.push(tagText); | |
ga_slLabelnumElms = ga_slLabelnumElms + 1; | |
}); | |
} | |
// 昇順にソート | |
ga_slAreaSepElms.sort( | |
function(a,b){ | |
if(a < b){ return -1 }; | |
if(a > b){ return 1 }; | |
return 0; | |
} | |
); | |
} | |
getHeight(); | |
$(window).resize(function(){ | |
getHeight(); | |
}); | |
$(window).scroll(function(){ | |
var ga_sl_y = $(this).scrollTop(); | |
if((ga_sl_y >= ga_slPointFixed)&&(!ga_slCmpFixed)){ | |
dataLayer.push({ | |
'scrollPoint': 0, | |
'event': 'Scroll' | |
}); | |
ga_slCmpFixed = true; | |
} | |
for (var i = 0; i < ga_slAreaSep.length; i++) { | |
if((ga_sl_y >= ga_slAreaSep[i])&&(!ga_slCmp[i])){ | |
dataLayer.push({ | |
'scrollPoint': ga_slLabel[i], | |
'event': 'Scroll' | |
}); | |
ga_slCmp[i] = true; | |
} | |
} | |
for (var i = 0; i < ga_slAreaSepElms.length; i++) { | |
if((ga_sl_y >= ga_slAreaSepElms[i])&&(!ga_slCmpElms[i])){ | |
dataLayer.push({ | |
'scrollPointElms': ga_slLabelElms[i], | |
'event': 'ScrollElms' | |
}); | |
ga_slCmpElms[i] = true; | |
} | |
} | |
}); | |
}); | |
/* ----------------------------------------------------------------- */ | |
}); | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment