「HOME」画面を増やさない 

「Aid AmbH」は、アクセサリツールの範疇です。 ブログページで表示されるアメブロヘッダーの「ホーム」のボタン、これを押すと「HOME」ページへ遷移します。

 

 

これは当然ですが、そもそもアメーバブログのページは「HOME」から開く事が殆どなので、元の「HOME」タブに更に「HOME」タブが追加されます。 アメーバユーザーは無用に増えた「HOME」タブを閉じる「後始末あるある」になります。

 

ブログ設計上「HOME」を起点に操作するのは理にかなっていて、「HOME」の各種ボタン(各種の行先)のクリックは、多くが「別タブに移動先を表示」します。 これで「HOME」タブが増えますが、機能上で閉じないのが妥当で仕方ありません。

 

この「HOME」画面の増殖を防ぐツールが「Aid AmbH」です。 大した機能ではなく、アメブロヘッダーの「ホーム」のボタンの動作をアレンジしています。

 

 

 

基本機能の改善 

これまでの方式は「window.history.length」を調べて「1」の場合は「別タブで開く」の操作で開いた画面と判断し、これは「HOME」から開いたのだろうという事で、「ホーム」のボタンを押すと「ウインドウを閉じる」操作をしていました。

 

これは賢い方式でなく、どこかで「新しいタブで開く」でブログ画面を開いた時にも、「ホーム」ボタンを押すとウインドウが閉じてしまいます。 余り使えないなぁと思っていたのですが、「document.referrer」を使った判定をすると「閉じて欲しくない」タブを、ちゃんと残してくれる様になりました。

 

「document.referrer」は、あるタブ(ウインドウ)を開いた元ページのドメイン名を返すので、「HOME」から開いたかどうかがほぼ判ります。「HOME」から開いたという事は、その「HOME」のタブが残っている場合が殆どで、「ホーム」が押したそのタブを閉じても良いという判断が出来ます。(厳密ではないですが)  これで、かなり使える様になったと思います。

 

 

「HOME」のリンクの整備 

このツールを上手く運用するには、「HOME」のリンクを全て「別タブで開く」設定にしておく事です。「HOME」ページから「遷移するタイプ」のリンクを無くしてしまうと、アメブロヘッダー上の「ホーム」ボタンを安心して押せます。

 

そこで、「HOME」で「ブログページ」を開くリンクボタンを調べ、「遷移」タイプのものには、全て「target="_blank"」の属性を付加しました。 調べ挙げるとけっこうありました。

 

▪「あなたのブログ」

▪「以前に書いた記事」

▪「芸能人・有名人ブログランキング」(9か所)

▪「昨日の人気ランキング」(10ヵ所)

 

以上を全て「別タブで開く」タイプに変更しました。

 

 

 

「SVG」アイコンの導入 

先のページ に書きましたが、「SVG」は自前のアイコンが必要な時に有効です。 この「Aid AmbH」では、つい最近に「ameba-symbols」がブログページで利用出来なくなり、対策をしたばかりです。

 

ただ、この対策はこのフォントの呼込み指定をブログページのHTMLに書き込むので、ページロード後にワンテンポ遅れてアイコンが表示されます。 これは美しくない表示で「SVG」アイコンの導入を決心しました。

 

アイコンのデザイン元は「ameba-symbols」の表示を拡大し、ドット修正したものをSVG変換しました。 下の左が修正した「64×64dot」のグラフィックです。 右側がそれを変換したSVG画像です。

 

 

「SVG」はベクトル描画なので、滑らかな曲線での描画になり、想像以上に綺麗な絵になって驚きます。 近代のフォント描画は、この技術を使っているんですね。

 

下は「p ピグ」のボタンのSVG化のコードです。

 

let amb_header=document.querySelector('#ambHeader');
let icon=document.querySelectorAll('._2sLQpDcQ svg');

let svg1=
    '<svg width="24" height="24" viewBox="0 0 64 64">'+
    '<g transform="translate(0,64) scale(0.1,-0.1)">'+
    '<path d="M255 506 c-74 -33 -95 -88 -95 -256 0 -117 '+
    '2 -132 20 -150 24 -24 48 -25 78 -4 17 12 22 25 22 59 '+
    'l0 44 35 -6 c105 -17 213 93 191 194 -23 105 -148 164 '+
    '-251 119z m119 -112 c20 -20 20 -43 0 -72 -18 -26 -50 '+
    '-28 -76 -5 -36 33 -13 93 37 93 13 0 31 -7 39 -16z"/>'+
    '</g></svg>';

let svg_d1=document.createElement('div');
svg_d1.id='svg_d1';
svg_d1.innerHTML=svg1;
if(!amb_header.querySelector('#svg_d1')){
    icon[1].parentNode.replaceChild(svg_d1, icon[1]); }

 

このコードとは別に、ここで生成したアイコンの色やフォバー時の表示を、ツールがページに埋め込んだCSSでデザインしています。

 

このコードは、「svg_d1」という「div要素」を生成し、それに「innerHTML」で画像のコード「svg1」を代入しています。 この方法は、ネット上になかったのですが、「background」プロパティでSVGを描画させるより、スマートな気がします。

 

今回の更新は、表面上は見分けが付きませんが、コードは大きく変わっています。

 

 

 

新しい「Aid AmbH」の動作仕様 

「Aid AmbH」を常駐させると、「HOME」で「フォローフィード」から見に行った「ブログ」ページから帰って来る時に、「HOME」画面のタブが増えません。

 

● このツールは、訪問した全てのユーザーのアメブロヘッダーで機能します。 また、「アメンバー」限定記事のアメブロヘッダーにも対応します。

 

●「ホーム」ボタンの動作を以下の基準で切り替えます。

 ◎「HOME」から開いたタブの場合は、「Click」で現在のタブを閉じる

 ◎「HOME」から開いた確認ができない場合は、「HOME」画面に遷移する

 ◎ ボタンを「Shift+Click」した場合は、常に「HOME」画面に遷移する

 

●「ピグ」ボタンはデフォルトのままで、現在のタブを「ピグ」画面に遷移

●「アメブロ」ボタンはデフォルトのままで、現在のタブを「管理トップ」に遷移

 

●「HOME」から開いたブログページから更に別ページを開いた場合は、そのタブが閉じる場合と、閉じずに「HOME」画面に遷移する場合があります。

 

 

 

「Aid AmbH」を利用するには 

 

❶ 拡張機能「Tampermonkey」の導入

「Tampermonkey」の導入手順は、以下のページを参照ください。

「Tampermonkey」は、使用しているブラウザに適した版を導入する必要があります。 既にこの拡張機能を導入している場合は、❶の手順は不要です。

 

 

❷「Aid AmbH」のインストール 

●「Tampermonkey」の「」マークの「新規スクリプト」タブを開きます。

 

 

 

●「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。

 

〔コピー方法〕 軽量シンプルなツール「PreBox Button   」を使うと

  コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」

  の操作で、掲載コードのコピーが可能になります。

 

● 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。

 

 

〔 Aid AmbH 〕ver. 0.5

 

// ==UserScript==
// @name         Aid AmbH
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  アメブロヘッダーの動作改善
// @author       Ameba blog User
// @match        https://ameblo.jp/*
// @match        https://secret.ameba.jp/*
// @match        https://www.ameba.jp/home
// @noframes
// @grant        none
// ==/UserScript==


if(location.hostname!='www.ameba.jp'){

    let target=document.querySelector('head');
    let monitor=new MutationObserver(main);
    monitor.observe(target, { childList: true });

    main();

    function main(){
        let amember=
            document.querySelector('[data-uranus-component="amemberLabel"]');

        let toHome;
        if(!amember){
            toHome=document.querySelector('._2sLQpDcQ:nth-child(2)'); }
        else if(amember){
            toHome=document.querySelector('.-ameblo-cmnhf-mypage a'); }


        let css;
        if(!amember){
            let amb_header=document.querySelector('#ambHeader');
            let icon=document.querySelectorAll('._2sLQpDcQ svg');
            if(icon.length=='3'){
                let svg0=
                    '<svg width="24" height="24" viewBox="0 0 64 64">'+
                    '<g transform="translate(0,64) scale(0.1,-0.1)">'+
                    '<path d="M212 558 c-7 -7 -12 -35 -12 -64 0 -28 -7 -68 -15 -87 -8 '+
                    '-20 -15 -66 -15 -104 0 -61 -3 -69 -27 -89 -32 -25 -27 -60 8 -49 14 '+
                    '5 25 2 30 -6 8 -11 12 -10 24 5 15 20 15 20 15 -1 0 -11 -9 -28 -20 -38 '+
                    '-31 -28 -8 -47 54 -43 44 3 51 6 54 25 4 30 20 30 24 1 3 -20 10 -23 54 '+
                    '-26 62 -4 85 15 54 43 -11 10 -20 27 -20 38 0 21 0 21 15 1 12 -15 16 '+
                    '-16 24 -5 5 8 16 11 30 6 35 -11 40 24 8 49 -25 20 -27 28 -27 91 -1 39 '+
                    '-7 88 -15 110 -8 22 -15 61 -15 86 0 30 -6 51 -15 59 -13 11 -21 8 -48 '+
                    '-18 -42 -41 -75 -41 -112 -2 -32 34 -36 35 -53 18z m38 -148 c0 -5 -4 '+
                    '-10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 -10z m150 '+
                    '0 c0 -5 -4 -10 -10 -10 -5 0 -10 5 -10 10 0 6 5 10 10 10 6 0 10 -4 10 '+
                    '-10z m-103 -28 c-19 -20 -7 -42 23 -42 30 0 42 22 23 42 -16 18 -16 18 '+
                    '3 12 26 -9 64 -45 64 -60 0 -6 -7 -18 -16 -25 -14 -11 -21 -11 -45 3 -27 '+
                    '16 -31 16 -58 0 -24 -14 -31 -14 -45 -3 -9 7 -16 19 -16 25 0 20 48 59 '+
                    '79 65 2 1 -3 -7 -12 -17z m61 -128 c33 -23 27 -73 -10 -94 -25 -13 -31 '+
                    '-13 -55 0 -38 21 -44 71 -11 94 12 9 29 16 38 16 9 0 26 -7 38 -16z"/>'+
                    '</g></svg>';

                let svg1=
                    '<svg width="24" height="24" viewBox="0 0 64 64">'+
                    '<g transform="translate(0,64) scale(0.1,-0.1)">'+
                    '<path d="M255 506 c-74 -33 -95 -88 -95 -256 0 -117 2 -132 20 -150 '+
                    '24 -24 48 -25 78 -4 17 12 22 25 22 59 l0 44 35 -6 c105 -17 213 93 '+
                    '191 194 -23 105 -148 164 -251 119z m119 -112 c20 -20 20 -43 0 -72 '+
                    '-18 -26 -50 -28 -76 -5 -36 33 -13 93 37 93 13 0 31 -7 39 -16z"/>'+
                    '</g></svg>';

                let svg2=
                    '<svg width="24" height="24" viewBox="0 0 64 64">'+
                    '<g transform="translate(0,64) scale(0.1,-0.1)">'+
                    '<path d="M267 519 c-48 -28 -61 -116 -23 -154 87 -87 217 6 161 115 '+
                    '-8 16 -24 34 -34 40 -25 13 -81 12 -104 -1z"/>'+
                    '<path d="M255 291 c-51 -23 -101 -79 -116 -132 -20 -64 -7 -69 181 -69 '+
                    '188 0 201 5 181 69 -15 53 -65 109 -116 132 -50 23 -80 23 -130 0z"/>'+
                    '</g></svg>';

                set_svg(0, svg0);
                set_svg(1, svg1);
                set_svg(2, svg2);

                function set_svg(n, path){
                    let svg_d=document.createElement('div');
                    svg_d.id='svg_d'+n;
                    svg_d.innerHTML=path;
                    if(!amb_header.querySelector('#svg_d'+n)){
                        icon[n].parentNode.replaceChild(svg_d, icon[n]); }}}

            css=
                '._2sLQpDcQ svg { '+
                'border: 1px solid #aaa; border-radius: 4px; transition: .2s;'+
                'padding: 0 2px; margin: 0 4px 0 15px; vertical-align: -9px; } '+
                '#svg_d0 svg { fill: #009688; } '+
                '#svg_d1 svg { fill: #ff9800; } '+
                '#svg_d2 svg { fill: #607d8b; } '+
                '._2sLQpDcQ svg { transition: .2s; } '+
                '._2sLQpDcQ:hover { opacity: 1; } '+
                '._2sLQpDcQ:hover svg { fill: #fff !important; background: #2196f3; }'; }


        else if(amember){
            css=
                '#ambHeader a:hover { text-decoration: none; } '+
                '#ambHeader .-ameblo-cmnhf-icon { '+
                'width: auto !important; height: 17px !important; '+
                'margin: 0 4px 0 15px !important; padding: 2px 1px 3px 1px !important; '+
                'border: 1px solid #aaa; border-radius: 4px; '+
                'vertical-align: -8px !important; background-image: none !important; } '+
                '#ambHeader .-ameblo-cmnhf-icon:before { '+
                'font: 24px/19px ameba-symbols; transition: .2s; } '+
                '.-ameblo-cmnhf-mypage .-ameblo-cmnhf-icon:before { '+
                'content: "\\EA1e"; color: #009688; } '+
                '.-ameblo-cmnhf-mypage:hover .-ameblo-cmnhf-icon { '+
                'background: #2196f3 !important; } '+
                '.-ameblo-cmnhf-mypage:hover .-ameblo-cmnhf-icon:before { '+
                'color: #fff !important; } '+
                '.-ameblo-cmnhf-pigg .-ameblo-cmnhf-icon:before { '+
                'content: "\\EA3b"; color: #ff9800; } '+
                '.-ameblo-cmnhf-pigg:hover .-ameblo-cmnhf-icon { '+
                'background: #2196f3 !important; } '+
                '.-ameblo-cmnhf-pigg:hover .-ameblo-cmnhf-icon:before { '+
                'color: #fff !important; } '+
                '.-ameblo-cmnhf-blog .-ameblo-cmnhf-icon:before { '+
                'content: "\\EA31"; color: #607d8b; } '+
                '.-ameblo-cmnhf-blog:hover .-ameblo-cmnhf-icon { '+
                'background: #2196f3 !important; } '+
                '.-ameblo-cmnhf-blog:hover .-ameblo-cmnhf-icon:before { '+
                'color: #fff !important; }'; }

        let base=document.querySelector('body');
        let style=document.createElement('style'); // ambHeader のアレンジ
        style.setAttribute("id", "aambh_style");
        style.innerHTML=css;
        if(!base.querySelector('#aambh_style')){
            base.appendChild(style); }


        toHome.addEventListener('click', function(event){
            event.preventDefault();
            if(event.shiftKey){
                location.href="https://www.ameba.jp/"; }
            else{
                if(document.referrer=='https://www.ameba.jp/'){
                    window.close(); }
                else{
                    location.href="https://www.ameba.jp/"; }}});

    }} // main()



if(location.hostname=='www.ameba.jp'){

    let target0=document.querySelector('head');
    let monitor0=new MutationObserver(main);
    monitor0.observe(target0, { childList: true });

    main();

    function main(){
        let blog_link=document.querySelector('.HomeBlogModule_BlogTitle_Link');
        if(blog_link){
            blog_link.setAttribute('target', '_blank'); }

        let lback=document.querySelector('.HomeBlogModule_LookBackEntry_Article');
        if(lback){
            lback.setAttribute('target', '_blank'); }

        let brank=document.querySelectorAll('.HomeBlogFeed_Article_BlogRanking_Link');
        for(let k=0; k<brank.length; k++){
            brank[k].setAttribute('target', '_blank'); }

        let trankt=document.querySelectorAll('.HomeBlogFeed_Article_TopicsRanking_Top3_Link');
        for(let k=0; k<trankt.length; k++){
            trankt[k].setAttribute('target', '_blank'); }

        let trank=document.querySelectorAll('.HomeBlogFeed_Article_TopicsRanking_Item_Link');
        for(let k=0; k<trank.length; k++){
            trank[k].setAttribute('target', '_blank'); }

    }} // main()

 

 

 

「Aid AmbH」最新版について 

旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。

 

●「Aid AmbH」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。