埋め込み要素の内容 のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- 埋め込み要素の内容 へ行く。
- 1 (2022-09-24 (土) 19:45:45)
- 2 (2022-09-25 (日) 11:34:22)
- 3 (2022-10-04 (火) 17:48:31)
定義番号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>