「お知らせ」機能を再び改善する
ここ数日、「いいね!のお知らせ」をクリックした場合に「管理トップ」を開く方法を工夫してきました。 その結果、一旦「いいね!履歴」を開き、そこから「管理トップ」を自動的に開く方法が、安定して動作する事が判り、採用を決めました。
このコードの開発中に、「お知らせ」の表示をシンプルにするコードを作ったので、これも今回の更新に採り入れる事にしました。
下は、「お知らせ」の主要な「❶ いいね!」「❷ コメント」「❸ メッセージ」の表示のサンプルです。
❶「いいね!」の本来の文字列は、以下です。
「あなたのブログ記事に新しくいいね!がつきました」
これは、僅かに長くて2行になるので、文字数を減らして1行の表示に改めました。
「ブログ記事に新しくいいね!がつきました」
これで「お知らせ」の表示が少しスマートになります。
❷「コメント」は表示パターンが2種類ある様です。 上図は2種が表示されていますが、文字数が多いと「~さんから」を省いたパターンに切替えるのかも知れません。 更に「コメントの承認制」の指定がない場合は「承認待ち」が省略されます。
最初は「コメント」の文字列も短くしようと考えましたが、2種に対応すると複雑になり、長い文言の一部を短くしてもバランスが悪いだけなので、やめました。
❸「メッセージ」の本来の文字列は以下です。
「~さんからメッセージが届きました」
これもユーザー名が長いと2行になる可能性があるので、文字数を減らしました。
「~さんからメッセージです」
以上のアレンジコードは以下です。
このコードで「コメント」以外は、スマートに纏まると思います。
「いいね!のお知らせ」で「管理トップ」を開くコード
「いいね!のお知らせ」をクリックすると、「いいね!履歴」→「管理トップ」へ自動的に遷移するコードは、以下のシンプルなコードで実現しています。
これは、「Follow Feed Checker ver. 1.3」のコードの末尾に追加されています。
●「いいね!のお知らせ」のクリック →「いいね!履歴」の本来の動作が良い場合は、コード末尾 500行目以降の、上記3行を削除するとその仕様になります。
セッションストレージ利用を導入
このツールは「フォロー解除」や「フォロー設定の変更」がフォローフィードから簡単に出来る機能があります。 フォローフィード上で、変更対象のブログ行を指定すると、「フォロー管理」のページに自動で移動し、対象ブログを検索して表示します。
フォローしたブログが多くても、その設定に直ぐアクセスできて便利です。 この検索は、複数ページ間を自動で検索移動するので、対象データをローカルストレージに仮記録して、ページごとに読み出して検索を続けます。 今回、この記録はセッションストレージを使うのが最適と気付き、ローカルストレージから変更しました。
ただし、「HOME」ページでの「フィード自動更新」の設定等は、従来の通りローカルストレージを利用します。
「Follow Feed Checker」の機能
「Follow Feed Checker」は、以下の機能を持つ主に「HOME」画面で動作する総合ツールです。
「フォローフィード」の自動更新
「フォローフィード」は「HOME」画面をリロードするか、「 フィードを更新」を押すことで、新しい投稿を取り込めます。
しかし、それらの操作が無いまま「HOME」画面を放置していると、新しい投稿を見落とすことになります。 このツールは、自動的にフィード更新を実行します。 そのタイミング等は任意に設定できます。
「フォローフィード」の読込み上限数の設定
フォローフィードに読み込まれる記事数は、デフォルトでは10件です。 これはフォローを活発に利用するユーザーには足りません。「フォローフィードをもっと見る」を何度も押すのは少し不便です。 このツールは、自動的にフィードを呼び込む件数を10件単位で指定できます。
以上の詳しい機能の説明は、以下のページにあります。
「フォロー」の管理機能
「フォロー」を設定するのは簡単ですが、解除するのは少し手間です。 そのユーザーのページを開いて解除したり、「公開・非公開」「メール通知」の変更などは更に手間です。 このツールは「HOME」のフォローフィードから、対象ユーザーの管理リスト行を表示する機能があります。 これで、フォロー管理がとても楽になります。
この機能の詳しい説明は、以下のページにあります。
「Follow Feed Checker」を使うには
このツールは Chrome / Edge / Firefox 版の拡張機能「Tampermonkey」上で動作します。 ツールの導入は以下の手順で行います。
❶ 拡張機能「Tampermonkey」の導入
「Tampermonkey」の導入手順は、以下のページを参照ください。
「Tampermonkey」は、使用しているブラウザに適した版を導入する必要があります。 既にこの拡張機能を導入している場合は、❶の手順は不要です。
❷「Follow Feed Checker」のインストール
●「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
●「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
● 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
● 旧バージョンをご利用の場合は、それをOFFにするか登録を削除して、新旧の同時ONは避けてください。
〔 Follow Feed Checker 〕ver. 1.3
// ==UserScript==
// @name Follow Feed Checker
// @namespace http://tampermonkey.net/
// @version 1.3
// @description 「フォローフィード」の管理補助ツール
// @author Ameba Blog User
// @match https://www.ameba.jp/home
// @match https://blog.ameba.jp/ucs/blgfavorite/*
// @match https://blog.ameba.jp/reader.do?bnm*
// @match https://blog.ameba.jp/readerend.do*
// @match https://blog.ameba.jp/ucs/iine/*
// @grant none
// ==/UserScript==
if(document.querySelector('#AppShellDesktop')){ // HOMEページで有効
let mode=0;
let lock=0;
let user_id;
let redo; // インターバル変数
let setting=[]; // 動作設定の記録配列
// setting[0] スクリプト名
// setting[1] フィード初期リスト数
// setting[2] フィードタイマー更新 ON/OFF
// setting[3] タイマー更新の繰返し時間
// setting[4] ブラウザフォーカス ON/OFF
// setting[5] リスト更新直前の最下のリスト番号
// setting[6] リスト更新直前のページスクロール量
let read_json=localStorage.getItem('followfeed_set'); // ローカルストレージ保存名
setting=JSON.parse(read_json);
if(setting==null || setting.length<7){
setting=['FollowFeedSet',20,1,10,0,0,0]; }
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); // ローカルストレージ保存
ff_panel();
ff_setting();
auto_feed();
function auto_feed(){
redo=setInterval(()=>{
feed(setting[2]); }, setting[3]*60000); } // 自動タイマー設定と開始 🔴
let focus_fake=1; // 不感コントロール変数
window.addEventListener('focus', function(){
if(setting[4]==1){ // フォーカスで自動タイマーリセット 🔴
if(focus_fake==1){
focus_fake=0;
clearInterval(redo);
auto_feed();
setTimeout(()=>{
focus_fake=1; }, setting[3]*30000); }}}); // フォーカス不感時間 🔴
function feed(sw){
let control_b=document.querySelector('.PcModuleHeader_Control button');
if(control_b && sw==1){
last_item(); // 🔵 リストスクロール位置取得
control_b.click();
fix_last(); }} // 指定記事までリストを開く 🔵
let target_p=document.querySelector('.HomeUserProfileBody'); // 監視 target
let monitor_p=new MutationObserver(notify);
monitor_p.observe(target_p, {childList: true, subtree: true}); // 監視開始
function notify(){
let note_button=document.querySelectorAll('.HomeRedNotification_Item button');
for(let k=0; k<note_button.length; k++){
let n_span=note_button[k].querySelector('span');
if(n_span){
if(n_span.textContent.includes('あなたのブログ記事に新しくいいね!')){
n_span.textContent='ブログ記事に新しくいいね!がつきました '; }
if(n_span.textContent.includes('メッセージが届きました')){
let m_span=n_span.textContent.replace(
'メッセージが届きました', 'メッセージです ');
n_span.textContent=m_span; }
}}}
function slow_more(){
let more_button=
document.querySelector('.HomeChecklist .Collection_ReadMore_Button');
if(more_button){
let rect=more_button.getBoundingClientRect();
let item=document.querySelectorAll('.HomeChecklist_Collection_Item');
if(rect.top<window.innerHeight && item.length<setting[1]){ // 指定記事数まで 🔴
last_item();
more_button.click(); }}}
function last_item(){
let item=document.querySelectorAll('.HomeChecklist_Collection_Item');
for(let k=item.length-1; k>=0; k--){
let rect=item[k].getBoundingClientRect();
if(rect.top<window.innerHeight){
setting[5]=k; // 🔵 リストの表示上の末尾を取得
setting[6]=parseInt(window.pageYOffset);
break; }}
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); } // ローカルストレージ保存
function fix_last(){
let item=document.querySelectorAll('.HomeChecklist_Collection_Item');
let more_button=
document.querySelector('.HomeChecklist .Collection_ReadMore_Button');
if(more_button){
if(item.length<setting[5]){ // 指定記事までリストを開く 🔵
more_button.click(); }}
document.documentElement.scrollTop=setting[6]; }
function top_env(){ // ページ最上部に 戻るボタン・スクロールバー で戻った場合
if(document.documentElement.scrollTop<100){
setting[5]=8;
setting[6]=0;
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); }} // ローカルストレージ保存
function ff_panel(){
let panel=document.createElement('div');
panel.innerHTML=
'<input id="ff_close" type="submit" value="✖">'+
'<span> フィードの初期リスト数 </span>'+
'<input id="list_open" type="number" value="20" min="10" step="10"> '+
'<label><input id="ff_timer" type="checkbox"> タイマー更新</label>'+
'<div id="ref_set"><span> 更新間隔 </span>'+
'<input id="ref_setter" type="number" value="10" min="1" max="30" step="1">'+
'<span> 分 </span></div>'+
'<label><input id="ff_focus" type="checkbox"> フォーカス検知</label>'+
'<style>#ff_panel { position: fixed; top: 8px; left: calc(50% - 480px); '+
'font: bold 16px/24px Meiryo; color: #666; background: #fff; display: none; '+
'width: auto; height: 30px; padding: 7px 20px 3px; border: 1px solid #20d6c5; '+
'box-shadow: 4px 6px 8px rgb(0, 0, 0, .1); z-index: 10; } '+
'#ff_close { padding: 3px 2px 1px; } '+
'#list_open, #ref_setter { width: 50px; padding: 4px 2px 1px; text-align: center; } '+
'#ref_set { display: inline-block; } '+
'.PcHeader_Logo_Image { outline: 1px solid #20d6c5; outline-offset: 3px; } '+
'</style>';
panel.setAttribute('id', 'ff_panel');
if(!document.querySelector('#ff_panel')){
document.querySelector('body').appendChild(panel); }}
function ff_setting(){
let pc_logo=document.querySelector('h1.PcHeader_Logo');
let ff_panel=document.querySelector('#ff_panel');
if(pc_logo && ff_panel){
pc_logo.onclick=function(event){
event.preventDefault();
ff_panel.style.display='block';
let ff_close=document.querySelector('#ff_close');
ff_close.onclick=function(event){
event.stopImmediatePropagation();
window.location.reload(); }
let list_open=document.querySelector('#list_open');
list_open.value=setting[1];
list_open.onchange=function(){
setting[1]=parseFloat(list_open.value);
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); } // ストレージ保存
let ff_timer=document.querySelector('#ff_timer');
let ref_set=document.querySelector('#ref_set');
let ref_setter=document.querySelector('#ref_setter');
if(setting[2]==1){
ff_timer.checked=true;
ref_set.style.opacity=1;
ref_setter.disabled=false; }
else{
ff_timer.checked=false;
ref_set.style.opacity=0.5;
ref_setter.disabled=true; }
ff_timer.onchange=function(){
if(ff_timer.checked){
setting[2]=1;
ref_set.style.opacity=1;
ref_setter.disabled=false; }
else{
setting[2]=0;
ref_set.style.opacity=0.5;
ref_setter.disabled=true; }
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); } // ストレージ保存
ref_setter=document.querySelector('#ref_setter');
ref_setter.value=setting[3];
ref_setter.onchange=function(){
if(parseFloat(ref_setter.value)>=0.1){
setting[3]=parseFloat(ref_setter.value); }
else{
setting[3]=1; }
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); } // ストレージ保存
let ff_focus=document.querySelector('#ff_focus');
if(setting[4]==1){
ff_focus.checked=true; }
else{
ff_focus.checked=false; }
ff_focus.onchange=function(){
if(ff_focus.checked){
setting[4]=1; }
else{
setting[4]=0; }
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); } // ストレージ保存
}}} // ff_setting()
let target=document.querySelector('.HomeChecklist'); // 監視 target
let monitor=new MutationObserver(main);
monitor.observe(target, {childList: true, subtree: true}); // 監視開始
function main(){
fix_last(); // ホームを開いた時の初期リスト表示 🔴
window.addEventListener('wheel', function(){
slow_more(); });
window.addEventListener("scroll", function() {
top_env(); });
window.addEventListener("beforeunload", function(){
setting[5]=8;
setting[6]=0;
let write_json=JSON.stringify(setting);
localStorage.setItem('followfeed_set', write_json); }); // ローカルストレージ保存
let more_button=
document.querySelector('.HomeChecklist .Collection_ReadMore_Button');
if(more_button){
more_button.addEventListener('mousedown', function(event){
last_item(); }); }
mode_select();
checker();
function mode_select(){
let control_a=document.querySelector('.PcModuleHeader_Control a');
control_a.onclick=function(e){
lock=1; } //「設定」で mode_selectを抑止
let control_b=document.querySelector('.PcModuleHeader_Control button');
control_b.onclick=function(e){
lock=1;
setTimeout( function(){
lock=0; }, 100); } //「フィードを更新」で mode_selectを抑止
let checklist=document.querySelector('.HomeChecklist');
let title=document.querySelector('.HomeChecklist .PcModuleHeader');
let title_label=document.querySelector('.HomeChecklist .PcModuleHeader_Title');
let title_con=document.querySelectorAll('.PcModuleHeader_Control_Link');
title.style.cursor='pointer';
title.onclick=function(){
if(mode==0 && lock==0){
mode=1;
checklist.style.boxShadow='0 0 0 15px #6292ab inset';
title.style.boxShadow='0 -4px 0 10px #6292ab, 0 0 0 20px #6292ab inset';
title_label.style.color='#fff';
title_con[0].style.background='#fff';
title_con[1].style.background='#fff';
wide_style();
checker();}
else if(mode==1 && lock==0){
mode=0;
checklist.style.boxShadow='';
title.style.boxShadow='';
title_label.style.color='#298538';
title_con[0].style.background='';
title_con[1].style.background='';
wide_style_off();
checker(); }}
let k;
let r_column=document.querySelector('.PcLayout_RightColumn');
let c_style=window.getComputedStyle(r_column);
let c_width=c_style.getPropertyValue('width');
let c_item=document.querySelectorAll('.HomeChecklist_Collection_Item:nth-child(odd)');
function wide_style(){
if(c_width=='740px'){
checklist.style.padding='20px';
for(k=0; k<c_item.length; k++){
c_item[k].style.marginRight='24px'; }}}
function wide_style_off(){
if(c_width=='740px'){
checklist.style.padding='';
for(k=0; k<c_item.length; k++){
c_item[k].style.marginRight='64px'; }}}}
function checker(){
let k;
let user_href;
let item=document.querySelectorAll('.HomeChecklist_Collection_Item');
for(k=0; k<item.length; k++){
select_item(k); }
function select_item(n){
if(mode==1){
item[n].onclick=function(e){
e.preventDefault();
user_href=item[n].querySelector('.HomeChecklist_Article_Link').getAttribute('href');
user_id=user_href.replace('https://ameblo.jp/', '');
let index=user_id.indexOf('/entry');
user_id=user_id.substring(0, index);
item[n].style.outline='2px solid red';
setTimeout( conf, 800);
function conf(){
item[n].style.outline='';
let url_str='https://blog.ameba.jp/ucs/blgfavorite/favoritelist.do?' + user_id;
window.open( url_str, '_blank'); }}} // ページ移動
else if(mode==0){
item[n].onclick=function(e){ ; }}}}
} // main()
} // HOMEページで有効
if(document.querySelector('#readerList')){ // フォロー管理ページで有効
let user_id;
let win_url;
let target=document.querySelector('body'); // 監視 target
let monitor=new MutationObserver(table_view);
monitor.observe(target, {childList: true, subtree: true}); // 監視開始
function table_view(){ // HOMEから遷移して来た最初の管理画面でのみ動作する
let k;
let tr_href=[];
let find=0;
win_url=window.location.search.substring(1,window.location.search.length);
if(win_url !='' && win_url.indexOf('pageID') ==-1){ // URLにuser_idが有る場合
user_id=win_url;
let write_json=JSON.stringify(user_id);
sessionStorage.setItem('followfeedcheck_id', write_json); // セッションストレージ名
let table_tr=document.querySelectorAll('.tableList tbody tr');
for(k=0; k<table_tr.length; k++){
tr_href[k]=table_tr[k].querySelector('td.title a').getAttribute('href');
if(tr_href[k].indexOf(user_id) !=-1){
find=1;
table_tr[k].style.outline='2px solid red';
table_tr[k].scrollIntoView({block: 'center'});
status();
return; }} // 検索処理を終了
if(find==0){ // user_idが見つからないと2ページへ移動
let pager=document.querySelector('.pagingArea');
let end=document.querySelector('.pagingArea .disabled.next');
if(!end && pager){ // ページング末尾で無ければ2ページへ
let url_str='https://blog.ameba.jp/ucs/blgfavorite/favoritelist.do?pageID=2&More';
window.open( url_str, '_self'); }}} // URLにuser_idが有る場合
else if(win_url.indexOf('&More') !=-1){ // URLに&Moreが有る場合のみ
let read_json=sessionStorage.getItem('followfeedcheck_id'); // &Moreページで再読込み
if(JSON.parse(read_json)){
user_id=JSON.parse(read_json); }
let table_tr=document.querySelectorAll('.tableList tbody tr');
for(k=0; k<table_tr.length; k++){
tr_href[k]=table_tr[k].querySelector('td.title a').getAttribute('href');
if(tr_href[k].indexOf(user_id) !=-1){
find=1;
table_tr[k].style.outline='2px solid red';
table_tr[k].scrollIntoView({block: 'center'});
status(); // 非公開への自動変更機能の待機
return; }} // 検索処理を終了
if(find==0){ // user_idが見つからないと次ページへ移動
let end=document.querySelector('.pagingArea .disabled.next');
if(!end){ // ページング末尾で無ければ次ページへ
let page_n=win_url.replace(/[^0-9]/g, '');
page_n=parseInt(page_n, 10) +1;
let url_str=['https://blog.ameba.jp/ucs/blgfavorite/favoritelist.do?pageID=',
+ page_n + '&More'].join('');
window.open( url_str, '_self'); }}}
else{ // HOMEからの遷移ではなく、単独でフォロー管理を開いた場合
status(); }
} // table_view()
function status(){ //「公開フォロー」を「非公開」に変更
let k;
let blog_id=[];
let status_span=[];
let del_button=[];
let blog_name=document.querySelectorAll('input[name="blog_name"]');
let table_tr=document.querySelectorAll('.tableList tbody tr');
let info=document.createElement('div');
info.textContent="「承認済み」ボタンをクリックすると"+
"「公開フォロー」を「非公開フォロー」に自動的に変更します";
info.style.margin='6px 0 -12px';
info.style.padding='2px 6px 1px';
info.style.color='#fff';
info.style.background='#2196f3';
let box=document.querySelector('#ucsMainLeft #notes');
if(!box.querySelector('div')){
box.appendChild(info); }
for(k=0; k<table_tr.length; k++){
blog_id[k]=blog_name[k].getAttribute('value');
del_button[k]=table_tr[k].querySelector('.btnDelete');
status_span[k]=table_tr[k].querySelector('.status span');
if(status_span[k].classList.contains('open')==true){
status_span[k].style.borderRadius='3px';
status_span[k].style.boxShadow='0 0 0 2px #2196f3';
status_span[k].style.cursor='pointer';
win_open(status_span[k], blog_id[k], del_button[k]); }}
function win_open(span, id, del){ // 公開→非公開の自動変更
span.onclick=function(){
del.click();
setTimeout(()=>{ // 対象ブログの削除ボタンを押す
let ok=document.querySelector('.minimumApplyButton a:first-child');
ok.click();
}, 20);
setTimeout(()=>{ // 対象ブログを非公開フォローする
let follow_url='https://blog.ameba.jp/reader.do?bnm=' + id + '&status=close';
window.open( follow_url, '_blank', 'top=0, left=0, width=480, height=360');
}, 500); }}} // 処理を待ってから次のステップを実行
} // フォロー管理ページで有効
if(document.querySelector('#header.rd-header')){ // フォロー登録画面で有効
let css=[
'body { font-family: Meiryo; background: #cfd8dc; }',
'#ambHeader { min-width: 400px !important; }',
'#header.rd-header { display: flex; justify-content: center; width: auto; ',
'padding: 20px 0 14px !important; }',
'#contentsArea.rd-contentsArea { width: 400px !important; margin: 0 auto; }',
'#mainCol.rd-mainCol { padding-top: 40px; }',
'#contentsArea.rd-contentsArea._end { width: 400px; margin: 0 auto; }',
'.rd-contentsArea._end #mainCol.rd-mainCol { padding: 20px 0 0; }',
'.rd-checkList { margin: 15px 0; } .rd-error .error { font-size: 18px; font-weight: bold; }',
'.rd-selectArea { width: 394px; } .rd-regist { padding: 15px; }',
'.rd-radioArea { margin: 0; } .rd-radioLabel { font-size: 16px; }',
'.rd-radioLabel:before { left: -23px; width: 14px; height: 14px; margin-top: -8px; }',
'.rd-radioLabel:after { left: -24px; width: 14px; height: 14px; margin-top: -9px; ',
'border: 1px solid #88bae6; }',
'#ambHeaderRight, #ambFooter { display: none; }',
'.rd-explanationSmall, .rd-amemberArea, .rd-browserPushArea, .rd-monsterBnr, ',
'.rd-explanation, .rd-explanationSub, .rd-radioExplanation, .rd-infoMail, ',
'.rd-followManagementLink { display: none; }' ].join(' ');
let style=document.createElement('style');
style.insertAdjacentHTML('afterbegin', css);
let head=document.getElementsByTagName('head')[0];
head.appendChild(style);
let target=document.querySelector('body'); // 監視 target
let monitor=new MutationObserver(ffcheker_do);
monitor.observe(target, {childList: true, subtree: true}); // 監視開始
function ffcheker_do(){
let win_url=window.location.search.substring(1,window.location.search.length);
if(win_url.indexOf('status=close')!=-1){
if(!document.querySelector('.rd-error._whole .error')){ // 既にフォローしていない事が条件
setTimeout(()=>{ // 非公開でフォローするにチェックを入れる
document.querySelector('#secInValidateNumber_01').checked=true;
}, 20);
setTimeout(()=>{ //「フォロー」決定ボタンを押す
document.querySelector('.rd-btnSubmit').click();
}, 40);
setTimeout(()=>{ // フォロー管理のトップを開く
let top_href='https://blog.ameba.jp/ucs/blgfavorite/favoritelist.do';
window.opener.location.href=top_href;
}, 500); }}} // 処理の結果をフォロー管理画面に反映
} // フォロー登録画面で有効
if(location.pathname=='/ucs/iine/list.html'){ //「いいね!履歴」ページで有効
if(document.referrer=='https://www.ameba.jp/'){
window.location.href='https://blog.ameba.jp/ucs/top.do'; }}
「Ameblo Management」の利用をお勧めします
「Follow Feed Checker」は「Ameblo Management」でアレンジした「HOME」画面や「フォロー管理」画面のデザインを前提に制作しています。 このアレンジが無くてもツールは動作しますが、なにかと扱い難いと思います。
特に「フォローフィード」に関しては、「Ameblo Management」のスタイルを適用すると、圧倒的に使い易いと感じるでしょう。
▪「フォローフィード」は「ホーム」画面の最上部に配置されます。
▪ デフォルトの2列の千鳥配列は、1列で縦並びのリストになります。
▪「新着 ●」「未読 ●」のマークと「記事タイトル文字色」で、未読 / 既読が明瞭に判断出来ます。 デフォルトの新着マークが消えた後でも、未読が判断できます。
「Ameblo Management」は、「ホーム」画面以外にも、アメブロの多くの画面のデザインをユーザーライクにアレンジします。 このスタイルを利用するには、以下のページの後半の導入手順を参照ください。
「Follow Feed Checker」最新版について
旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。
●「Follow Feed Checker」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。







