マークの保持時間のメニューを変更
いわゆる「未開封」を表示する「グリーンマーク」の設定メニューを変更しました。
「3分」の設定ははたして必要かを考えた結果、「マーク表示機能無し」の選択を追加して、マークのリセット仕様を2通りにする形に、選択方法を纏めなおしました。
リセット仕様(MODE1):コメント参照時
これまでの仕様で、マークの付いた新コメントで機能ボタンを操作すると、その時点でマークが消えます。
◎「1時間」は、マークが自動削除されるまでのデフォルト設定です。 普通の操作でマークがすぐに消えますから、マークが邪魔という事は無いと思います。
◎「6時間」は、Cookieデータの重積が生じない範囲で、長めの設定です。 これを24時間などにすると、返信コメントを常にブログで書く場合、「認証」操作で前回データに新データが追加され、Cookieデータが増え続ける可能性があります。「コメント管理」で「返信」や「参照」操作をするユーザーの場合は、全く無問題ですが。
◎「マーク非表示」の設定は、「公開済み」画面でマークを一切表示しません。 マークが目障りな場合には、これが選べます。
リセット仕様(MODE2):返信の送信時
これは、返信コメントを書いて「送信」ボタンを押した段階で、マークが初めて消えます。 返信する事を欠かさない事にしていて、見落しをできるだけ避けたい場合に適した設定です。「返信の送信」の操作をしない限りマークは消えませんが、上記の理由で、マークの保持時間は最長で「6時間」です。
◎「1時間」は、普通の使用では充分と思います。「コメント設定」を全く指定しなかった場合や、30日以上コメント操作がなかった場合は「1時間」になります。
◎「6時間」は、忙しくてコメント処理が中断する事が多い場合などに適しています。「承認」して6時間以内ならマークが再表示されるので、安心して「コメント管理」を離れたりPCの電源を落とせます。
リセット仕様(MODE2)の操作について
新しく追加した「返信の送信時」の設定は、ていねいに「返信」する事を心がけているユーザーにはぴったりです。 このMODE2では、グリーンマークは「未返信」を示す確実な機能として働きます。
ただし、中には「返信」せず「公開」だけとしたいコメントがあるかも知れません。 そんな場合は「1時間」あるいは「6時間」の間、マークが残る事になります。 これは、新コメントが他にあるとややこしいので、特別に消す方法を作りました。
◎ 「…」ボタンを「Ctrl+左クリック」すると、マークをリセットできます。
◎ この操作では、本来の「ID・IP表示」などのメニューは表示されません。
◎ 消したマークを再表示する事はできません。 これは MODE1 ・MODE2にかかわらず、グリーンマークの仕様です。
◎「設定」画面を開いて、一時的に「コメント参照時(MODE1)」の仕様に変更する事でもマークを消す事ができますが、少し手間です。
「Comment C-O」 ver. 0.7
「Comment C-O」は「コメント管理」ページのコメントリストの操作性を改善するツールです。「コメント管理」の画面で返信コメントの編集をするユーザーに、色々な有効な機能を提供します。
◎ このツールの使用には「Ameblo Management ver.2020.11.07」以降の適用が必須です。「Ameblo Management」の導入方法は以下を参照ください。
〔注意〕「コメント管理」ページのスクロール指定を変更しました。 このため、2020.11.07 以降のバージョンでないと、「暗転」「ホワイトアウト」の機能に不具合が生じます。
ツールを導入するには
「Comment C-O」は Chrome / Edge / Firefox の拡張機能の「Tampermonkey」上で動作します。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
〔 Comment C-O 〕 ver. 0.7
// ==UserScript==
// @name Comment C-O
// @namespace http://tampermonkey.net/
// @version 0.7
// @description コメント管理画面のリスト開閉機能
// @author Ameba Blog User
// @match https://blog.ameba.jp/ucs/comment/comment*
// @noframes
// @run-at document-start
// @grant none
// ==/UserScript==
let save_t;
let mode_key;
window.addEventListener('DOMContentLoaded', function(){
environ();
set_items();
list_mode();
save_set();
function environ(){
let css=
'.userList__item { position: relative; } '+
'.userList__item:focus { outline: 2px solid #2196f3; } '+
'.userList__text { display: none; } '+
'.userList__information { top: 42px; right: 330px; } '+
'.userList__buttons { top: 38px; right: 76px; } '+
'.co_view { width: 29px; height: 29px; margin-left: 16px; color: #888; '+
'font: 16px/30px Meiryo; padding: 0; border: 1px solid #aaa; '+
'border-radius: 4px; background: #fff; cursor: pointer; } '+
'.co_menu { '+
'background: linear-gradient(#26c6da 0%, #009688 70%) !important; } '+
'.co_menu:hover { '+
'background: linear-gradient(#009688 0%, #26c6da 100%) !important; } '+
'.co_menu svg { fill: #fff; } '+
'.item_close { position: absolute; margin: 0 !important; } '+
'.userList__tooltip { z-index: 1; }';
let style=document.createElement('style');
style.setAttribute('id', 'co_list');
style.innerHTML=css;
let target=document.querySelector('body');
if(!target.querySelector('#co_list')){
target.appendChild(style); }}
function set_items(){
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
items[k].setAttribute('tabindex', '0');
let information=items[k].querySelector('.userList__information');
let buttons=items[k].querySelector('.userList__buttons');
set_view(buttons);
information.classList.add('item_close');
buttons.classList.add('item_close'); }
function set_view(elem){
let view=document.createElement('button');
view.setAttribute('type', 'button');
view.setAttribute('class', 'co_view');
view.textContent='▼';
if(!elem.querySelector('.co_view')){
elem.appendChild(view); }}}
function list_mode(){
let tab_item=document.querySelectorAll('.tabs .tabs__item');
if(tab_item[0] && tab_item[0].classList.contains('is-active')){ // 公開済み画面
let approved=get_cookie('approved');
if(approved!=0){ // approved: 1:制限表示 2:全文表示
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let view_button=items[k].querySelector('.co_view');
let text=items[k].querySelector('.userList__text');
text.style.display='block';
height_g(text, approved);
view_button.textContent='▲'; }}
document.cookie='approved='+approved+'; Max-Age=2592000'; }
if(tab_item[1] && tab_item[1].classList.contains('is-active')){ // 承認待ち画面
let pending=get_cookie('pending');
if(pending!=0){ // pending: 1:制限表示 2:全文表示
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let view_button=items[k].querySelector('.co_view');
let text=items[k].querySelector('.userList__text');
text.style.display='block';
height_g(text, pending);
view_button.textContent='▲'; }}
document.cookie='pending='+pending+'; Max-Age=2592000';
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let menu_button=items[k].querySelector('.userList__menu');
menu_button.classList.add('co_menu'); }}
} // list_mode()
function save_set(){ // 緑マークの保持時間・動作modeなどはここで設定 🟩
let save=get_cookie('save_time');
if(save==0){
save_t=3600; }
else if(save==1){
save_t=21600; }
else if(save==2){
save_t=0; }
document.cookie='save_time='+save+'; Max-Age=2592000';
mode_key=get_cookie('mode_key'); }
}); // window.addEventListener
window.addEventListener('load', function(){
open_edit();
open_read();
close();
text_focus();
menu_read();
read_memo();
read_memo_app();
memo();
memo_app();
function open_edit(){
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let reply_button=items[k].querySelector('.js-comment-reply-button');
if(reply_button){
reply_button.addEventListener('click', function(){
let text=items[k].querySelector('.userList__text');
let information=items[k].querySelector('.userList__information');
let buttons=items[k].querySelector('.userList__buttons');
text.style.display='block';
information.classList.remove('item_close');
buttons.classList.remove('item_close');
height_g(text, 1);
app_reset(items[k], 0); // 🟩
items[k].scrollIntoView({block: "center"});
items[k].setAttribute('tabindex', ''); }); }}}
function open_read(){
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let view_button=items[k].querySelector('.co_view');
if(view_button){
view_button.addEventListener('click', function(){
toggle(items[k], view_button);
app_reset(items[k], 0); }); }} // 🟩
function toggle(item, sw){
let open_limit;
let tab_item=document.querySelectorAll('.tabs .tabs__item');
if(tab_item[0] && tab_item[0].classList.contains('is-active')){ // 公開済み画面
open_limit=get_cookie('approved'); }
else if(tab_item[1] && tab_item[1].classList.contains('is-active')){ // 承認待ち画面
open_limit=get_cookie('pending'); }
let text=item.querySelector('.userList__text');
if(sw.textContent=='▼'){
text.style.display='block';
sw.textContent='▲';
height_g(text, open_limit); }
else{
text.style.display='none';
sw.textContent='▼';
item.focus(); }}}
function menu_read(){
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let menu_button=items[k].querySelector('.userList__menu');
menu_button.addEventListener('click', function(event){
if(event.ctrlKey){
menu_button.click();
app_reset(items[k], 1); }
else{
app_reset(items[k], 0); }}); }} // 🟩
function close(){
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let reply_cancel=items[k].querySelector('.js-comment-reply-cancel');
if(reply_cancel){
reply_cancel.addEventListener('click', function(){
let text=items[k].querySelector('.userList__text');
let information=items[k].querySelector('.userList__information');
let buttons=items[k].querySelector('.userList__buttons');
text.style.display='none';
information.classList.add('item_close');
buttons.classList.add('item_close');
let view_button=items[k].querySelector('.co_view');
if(view_button.textContent=='▲'){
view_button.textContent='▼'; }
items[k].setAttribute('tabindex', '0');
items[k].focus(); }); }}}
function text_focus(){
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let text=items[k].querySelector('.userList__text');
let resizeObserver=new ResizeObserver(recover_scroll);
resizeObserver.observe(text);
function recover_scroll(){
let textarea=items[k].querySelector('.formGroup__textarea');
if(textarea){
textarea.blur(); }}}}
function memo(){
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let sendbutton=items[k].querySelector('.commentList .sendButton');
if(sendbutton){
sendbutton.addEventListener('mousedown', function(){
let comm_id=sendbutton.getAttribute('data-comment-id');
document.cookie='comm_id='+comm_id+'; Max-Age=20';
app_reset(items[k], 1); }); }}} // 🟩
function read_memo(){
let comm_id=get_cookie('comm_id');
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let sendbutton=items[k].querySelector('.commentList .sendButton');
if(sendbutton){
let id=sendbutton.getAttribute('data-comment-id');
if(id==comm_id){
items[k].focus(); }}}}
function memo_app(){
let app_button=document.querySelectorAll('[data-section-id="comment_approve"]');
for(let k=0; k<app_button.length; k++){
app_button[k].addEventListener('mousedown', function(){
let comm_id=app_button[k].getAttribute('data-comment-id');
let approve_id=get_cookie('new_comm_id');
cookie_write(approve_id, comm_id); }); }
function cookie_write(value0, value1){
if(value0==0){
document.cookie='new_comm_id='+value1+'; Max-Age='+save_t; }
else{
let arr=value0.split('%');
arr.push(value1);
let approve_id_n=arr.join('%');
document.cookie=
'new_comm_id='+approve_id_n+'; Max-Age='+save_t; }}}
function read_memo_app(){
let approve_id=get_cookie('new_comm_id');
let items=document.querySelectorAll('.userList__item');
for(let k=0; k<items.length; k++){
let sendbutton=items[k].querySelector('.commentList .sendButton');
if(sendbutton && approve_id!=0){
let id=sendbutton.getAttribute('data-comment-id');
if(approve_id.indexOf(id)!=-1){
let view_button=items[k].querySelector('.userList__menu');
view_button.classList.add('co_menu'); }}}}
function app_reset(item, mode){ // 🟩
if(mode==mode_key){
let approve_id=get_cookie('new_comm_id');
let menu_button=item.querySelector('.userList__menu');
let sendbutton=item.querySelector('.commentList .sendButton');
if(sendbutton && approve_id!=0){
menu_button.classList.remove('co_menu');
let id=sendbutton.getAttribute('data-comment-id');
let arr=approve_id.split('%');
let arr_d=arr.filter(function(value){
return value!=id; });
let approve_id_d=arr_d.join('%');
document.cookie='new_comm_id='+approve_id_d+'; Max-Age='+save_t; }}}
}); // window.addEventListener
function height_g(elem, limit){
let s_height=elem.scrollHeight;
if(s_height<300){
elem.style.height='auto'; }
else{
if(limit!=2){
elem.style.height='300px'; }
else if(limit==2){
elem.style.height='auto'; }}}
function get_cookie(name){
let cookie_req=document.cookie.split('; ').find(row=>row.startsWith(name));
if(cookie_req){
if(cookie_req.split('=')[1]==null){
return 0; }
else{
return cookie_req.split('=')[1]; }}
if(!cookie_req){
return 0; }}
window.addEventListener('load', function(){
let SettingsList=document.querySelector('.commentSettingsList');
if(SettingsList){ // コメント設定メニューの画面でのみ動作
let list1=document.createElement('li');
list1.setAttribute('id', 'list1');
list1.classList.add('commentSettingsList__item');
list1.innerHTML=
'<div class="commentSettingsList__link" style="justify-content: normal">'+
'公開済みリスト 初期表示のコメント内容: '+
'<input name="approved" type="radio" id="approved0"> 非表示 '+
'<input name="approved" type="radio" id="approved1"> 制限表示 '+
'<input name="approved" type="radio" id="approved2"> 全文表示</div>';
if(!SettingsList.querySelector('#list1')){
SettingsList.appendChild(list1); }
let list2=document.createElement('li');
list2.setAttribute('id', 'list2');
list2.classList.add('commentSettingsList__item');
list2.innerHTML=
'<div class="commentSettingsList__link" style="justify-content: normal">'+
'承認待ちリスト 初期表示のコメント内容: '+
'<input name="pending" type="radio" id="pending0"> 非表示 '+
'<input name="pending" type="radio" id="pending1"> 制限表示 '+
'<input name="pending" type="radio" id="pending2"> 全文表示</div>';
if(!SettingsList.querySelector('#list2')){
SettingsList.appendChild(list2); }
let list3=document.createElement('li');
list3.setAttribute('id', 'list3');
list3.classList.add('commentSettingsList__item');
list3.innerHTML=
'<div class="commentSettingsList__link" style="justify-content: normal">'+
'承認したコメントの緑マーク 保持時間: '+
'<input name="save" type="radio" id="save0"> 1時間 '+
'<input name="save" type="radio" id="save1"> 6時間 '+
'<input name="save" type="radio" id="save2"> マーク非表示</div>';
if(!SettingsList.querySelector('#list3')){
SettingsList.appendChild(list3); }
let list4=document.createElement('li');
list4.setAttribute('id', 'list4');
list4.classList.add('commentSettingsList__item');
list4.innerHTML=
'<div class="commentSettingsList__link" style="justify-content: normal">'+
'承認したコメントの緑マーク リセット仕様: '+
'<input name="mode" type="radio" id="mode0"> コメント参照時 '+
'<input name="mode" type="radio" id="mode1"> 返信の送信時</div>';
if(!SettingsList.querySelector('#list4')){
SettingsList.appendChild(list4); }
set_radio();
function set_radio(){
let approved=get_cookie('approved');
let approved0=document.querySelector('#approved0');
let approved1=document.querySelector('#approved1');
let approved2=document.querySelector('#approved2');
if(approved==0){ // approved: 0:コメント非表示 1:制限表示 2:全文表示
approved0.checked=true; }
else if(approved==1){
approved1.checked=true; }
else if(approved==2){
approved2.checked=true; }
document.cookie='approved='+approved+'; Max-Age=2592000';
let pending=get_cookie('pending');
let pending0=document.querySelector('#pending0');
let pending1=document.querySelector('#pending1');
let pending2=document.querySelector('#pending2');
if(pending==0){ // pending: 0:コメント非表示 1:制限表示 2:全文表示
pending0.checked=true; }
else if(pending==1){
pending1.checked=true; }
else if(pending==2){
pending2.checked=true; }
document.cookie='pending='+pending+'; Max-Age=2592000';
let save=get_cookie('save_time'); // save: 0:1時間 1:6時間 2:マーク非表示
let save0=document.querySelector('#save0');
let save1=document.querySelector('#save1');
let save2=document.querySelector('#save2');
if(save==0){
save0.checked=true; }
else if(save==1){
save1.checked=true; }
else if(save==2){
save2.checked=true; }
document.cookie='save_time='+save+'; Max-Age=2592000';
let mode=get_cookie('mode_key'); // mode: 0:コメント参照時 1:返信の送信時
let mode0=document.querySelector('#mode0');
let mode1=document.querySelector('#mode1');
if(mode==0){
mode0.checked=true; }
else if(mode==1){
mode1.checked=true; }
document.cookie='mode_key='+mode+'; Max-Age=2592000'; }
radio_select();
function radio_select(){
let approved0=document.querySelector('#approved0');
approved0.onchange=function(){
document.cookie='approved=0; Max-Age=2592000'; }
let approved1=document.querySelector('#approved1');
approved1.onchange=function(){
document.cookie='approved=1; Max-Age=2592000'; }
let approved2=document.querySelector('#approved2');
approved2.onchange=function(){
document.cookie='approved=2; Max-Age=2592000'; }
let pending0=document.querySelector('#pending0');
pending0.onchange=function(){
document.cookie='pending=0; Max-Age=2592000'; }
let pending1=document.querySelector('#pending1');
pending1.onchange=function(){
document.cookie='pending=1; Max-Age=2592000'; }
let pending2=document.querySelector('#pending2');
pending2.onchange=function(){
document.cookie='pending=2; Max-Age=2592000'; }
let save0=document.querySelector('#save0');
save0.onchange=function(){
document.cookie='save_time=0; Max-Age=2592000'; }
let save1=document.querySelector('#save1');
save1.onchange=function(){
document.cookie='save_time=1; Max-Age=2592000'; }
let save2=document.querySelector('#save2');
save2.onchange=function(){
document.cookie='save_time=2; Max-Age=2592000'; }
let mode0=document.querySelector('#mode0');
mode0.onchange=function(){
document.cookie='mode_key=0; Max-Age=2592000'; }
let mode1=document.querySelector('#mode1');
mode1.onchange=function(){
document.cookie='mode_key=1; Max-Age=2592000'; }}
}}); // window.addEventListener
「Comment C-O」最新版について
旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。 最新バージョンへのリンクは、以下のページのリンクリストから探せます。





