編集済み
そのため、ユーザーがすでにアクセスしたポートフォリオページを確認する必要があります(注:Cookieの代わりに、HTML5 History APIまたはlocalStorageを検討することもできます)。
ユーザーがページにアクセスしたときに、どこかからポートフォリオIDを取得する必要があります。これは、DOM要素内にある場合もあれば、URLのクエリ文字列内にある場合もあります。後者だと思います。
// Get the portfolio ID from the query string
var currentId = new RegExp("[\\?&]MYID=([^&#]*)").exec(location.search)[1]
// Replace MYID in the line above with the name of your querystring parameter
はい、IDがあります。次に、Cookieから既存のものを読み取る必要があります。Cookieが存在しない場合は、作成する必要があります。
function get_cookie ( cookie_name )
{
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if ( results )
return ( unescape ( results[2] ) );
else
return null;
}
if (get_cookie('readPortfolios') == null) {
// Extremely simplified implementation
document.cookie = 'readPortfolios=' + currentId;
}
else {
// We have a cookie already. We'll read it
var ck = get_cookie('readPortfolios');
// We want to add this page's portfolio Id
ck += ',' + currentId;
// We then want to save the cookie back
document.cookie = 'readPortfolios=' + ck;
}
これで、ページごとの作業は完了です。次に、メインページのリストを調べて、どのページにアクセスしたかを確認します。
次のようなリストがあると仮定します。
<ul id="myPortfolioList">
<li id="data-id-1">Text One</li>
<li id="data-id-2">Text Two</li>
<li id="data-id-3">Text Three</li>
</ul>
最初にCookieの値が必要です。次に、これらをリストアイテムのId値と比較します。
var values = get_cookie('readPortfolios').split(',')
$('#myPortfolioList li').each(function(){
if ($.inArray(this.id, values) > -1) {
console.info('Portfolio Item ' + this.id + ' has been visited.');
}
});