埋め込み要素の内容 のバックアップ(No.1)


定義番号1

/*

   特集記事などをサイドメニュー内に表示し、一定回数のページ遷移やリロードが発生した後、
   特集記事を簡易表示させるためのプラグインです。メニューブロック内に特集記事の全文と、
   簡易表示の両方を予め記載しておき、スタイルシートの display 属性を切り替える事で実現
   しています。
   コメント内で特集記事の全文が記載されている領域を「詳細表示領域」、リンク先などを簡易
   表示している領域を「簡易表示領域」と、呼ぶことにします。
*/

$(document).ready(function(){

   // 表示制御期間をミリ秒単位で設定。本来24時間に設定するが、テスト用なので10分に設定した
   // 24時間にしたい場合は "24 * 60 * 60 * 1000" と、する
   var limitTime = 10 * 60 * 1000;
   // テキストを非表示にするまでのアクセス数を3に設定
   var limitCount = 3;
   // 現在時刻を取得
   var currentTime = (new Date()).getTime();
   // 最後にアクセスした日時を取得。なければ現在時刻から表示制御期間を引いた値を設定
   var lastAccessTime = Number(localStorage.getItem("lastAccessTime")) || currentTime - limitTime;
   // 最終アクセス日時から表示制御期間が経過していたらカウンタを0にする
   if (currentTime - lastAccessTime >= limitTime) {
       localStorage.setItem('counter', '0');
   }
   // カウンタの値を取得
   var counter = Number(localStorage.getItem('counter'));
   // カウンタに1を加える
   counter += 1;
   // 特集記事の前後に埋め込まれた、各マーカー要素を求める
   var markerA = $('#menu-display-controller-marker-a').parents('.embed')[0];
   var markerB = $('#menu-display-controller-marker-b').parents('.embed')[0];
   var markerC = $('#menu-display-controller-marker-c').parents('.embed')[0];
   // 詳細表示領域内の要素を格納する
   var firstDisplayElements = [];
   // 簡易表示領域内の要素を格納する
   secondDislayElements = [];
   // メニュー内の子要素を列挙し、詳細表示領域なのか、簡易表示領域なのかを調査し、
   // firstDisplayElements, secondDislayElements に代入する
   var stepStatus = 'lookForMarkerA';
   $('#menubar').children().each(function(i) {
       switch (stepStatus) {
       case 'lookForMarkerA':
           if (this === markerA) {
               stepStatus = 'lookForMarkerB';
           }
           break;
       case 'lookForMarkerB':
           if (this === markerB) {
               stepStatus = 'lookForMarkerC';
           } else {
               firstDisplayElements.push(this);
           }
           break;
       case 'lookForMarkerC':
           if (this === markerC) {
               return false;
           } else {
               secondDislayElements.push(this);
           }
           break;
       }
   });
   if (counter <= limitCount) {
       // 指定回数のページ遷移、リロードが行われていない時は
       // 詳細表示領域を表示し、簡易表示領域を非表示にする。
       firstDisplayElements.forEach(function(elm) {
           $(elm).show();
       });
       secondDislayElements.forEach(function(elm) {
           $(elm).hide();
       });
   } else {
       // 指定回数のページ遷移、リロードが行われた後は、
       // 詳細表示領域を非表示にし、簡易表示領域を表示する。
       firstDisplayElements.forEach(function(elm) {
           $(elm).hide();
       });
       secondDislayElements.forEach(function(elm) {
           $(elm).show();
       });
   }
   // ちらつき防止のためにデフォルトで非表示にしていたメニューを表示する
   $('#menubar').show();
   // カウンタと最終アクセス日時を保存
   localStorage.setItem('lastAccessTime', currentTime);
   localStorage.setItem('counter', counter);

})

定義番号2

div id="menu-display-controller-marker-b"></div>

定義番号3

定義番号2の内容と似ているので注意してください。

div id="menu-display-controller-marker-c"></div>