前バージョンの動作検証
前ページのバージョンでテストを行っていると、幾つか問題がある事が判りました。
① スマホ動画プレーヤーのボカシ背景非表示の動作が不安定で、表示されたままになる事が多い。
➁ スマホ動画プレーヤーの iframe内に、ブログページのHTMLに埋込む styleタグが埋込まれる。
以上の問題に関してコードを修正しました。
① の原因と対策
iframe内の動画プレーヤーは、動的な書換えが頻繁に行われるらしく、要素に対するインラインの「style指定」は、一旦有効になっても、指定した要素が更新されて無効になるのではないかと思われます。
そこで確実な方法として、「styleタグ」を iframe内に埋込み、iframe内を修飾する様にしました。 これで、背景の非表示が確実になりました。
下は、このコードが動画プレーヤーの iframe内に「id="ALJM"」の「styleタグ」を埋込んだ様子です。
➁ の原因と対策
これは、ブログページに適用するコードと、後から追加した iframe内に適用するコードを、動作域の区別なく共存させてしまったためです。
前バージョンから、スクリプトヘッダーは2個の「@match指定」を書き込んでいますが、本来は2個のスクリプトツールを同居させたもので、スクリプトの動作域の厳密な区別が必要でした。 以下のコードで2つのコードをラップして区別しました。
これで、無駄なコードが実行される事がなくなりました。
「Ameblo Lightbox JS Movie」を利用するには
「Ameblo Lightbox JS Movie」(動画)の取扱い説明は、以下のページにあります。
このツールは Chrome / Edge / Firefox 版の「Tampermonkey」上で動作させる事が出来ます。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
〔 Ameblo Lightbox JS Movie 〕ver. 0.6 (動画)
// ==UserScript== // @name Ameblo Lightbox JS Movie // @namespace http://tampermonkey.net/ // @version 0.6 // @description ブログ掲載動画のウインドウ内の暗転拡大表示 // @author Ameba Blog User // @match https://ameblo.jp/* // @match https://static.blog-video.jp/* // @grant none // ==/UserScript== if(document.domain=='ameblo.jp'){ let target=document.querySelector('head'); let monitor=new MutationObserver(catch_mov); monitor.observe(target, { childList: true }); catch_mov(); function catch_mov(){ box_env3(); function box_env3(){ let css= '.mov_player { position: fixed; top: 0; left: 0; z-index: 5000; '+ 'padding: 10vh 2vw; width: 96vw !important; height: 80vh !important; '+ 'background: #000; box-shadow: 0 0 0 2px #000; border: none !important; '+ 'box-sizing: content-box !important; outline: none !important; } '+ '.c_o { position: relative; } '+ '.c_o:hover .pre_player { border: 5px solid #2196f3; box-sizing: border-box; '+ 'outline: 1px solid #fff; outline-offset: -5px; } '+ '.c_i { position: relative; top: 0; width: 100%; height: 100%; } '+ '.c_i:hover { cursor: pointer; } '+ '#close_header { position: fixed; top: 0; left: 0; z-index: 5001; '+ 'width: 100%; height: 60px; display: none; } '+ '#close_header:hover #close_mov { opacity: 1; } '+ '#close_mov { position: absolute; top: 20px; left: 30px; opacity: 0; '+ 'font: bold 21px Meiryo; padding: 5px 12px 1px; background: #fff; '+ 'color: #000; border: 2px solid #000; border-radius: 6px; cursor: pointer; }'; let style=document.createElement('style'); style.setAttribute('id', 'light_style_y'); style.textContent=css; if(!document.querySelector('#light_style_y')){ document.body.appendChild(style); } let close=document.createElement('div'); close.setAttribute('id', 'close_header'); close.innerHTML='<p id="close_mov">✖ Close Movie</p>'; if(!document.querySelector('#close_header')){ document.body.appendChild(close); }} let y_iframe=document.querySelectorAll('#entryBody iframe[src*="youtube.com"]'); for(let k=0; k<y_iframe.length; k++){ cover_sw(y_iframe[k]); } let s_iframe=document.querySelectorAll('#entryBody iframe[src*="static.blog-video"]'); for(let k=0; k<s_iframe.length; k++){ cover_sw(s_iframe[k]); } let c_iframe=document.querySelectorAll('#entryBody iframe[src*="static-clipblog.blog-video"]'); for(let k=0; k<c_iframe.length; k++){ cover_sw(c_iframe[k]); } function cover_sw(video){ let cover_out=document.createElement('div'); cover_out.setAttribute('class', 'c_o'); if(video.parentNode.className!='c_o'){ cover_out.appendChild(video.cloneNode(true)); video.parentNode.replaceChild(cover_out, video); let cover_in=document.createElement('div'); cover_in.setAttribute('class', 'c_i'); cover_out.appendChild(cover_in); }} document.addEventListener('keydown', (event)=>{ if(event.ctrlKey){ box_view(); }}); document.addEventListener('keyup', (event)=>{ if(!event.ctrlKey){ cover_off(); }}); let amb_header=document.querySelector('#ambHeader'); let html_=document.querySelector('html'); function box_view(){ let cover=document.querySelectorAll('.c_i'); for(let k=0; k<cover.length; k++){ cover[k].style.position='absolute'; let player=cover[k].previousElementSibling; if(player){ player.classList.add('pre_player'); } cover[k].onclick=function(event){ event.stopImmediatePropagation(); let player=cover[k].previousElementSibling; if(player){ player.classList.add('mov_player'); amb_header.style.zIndex=0; zoom_reset(player); } let close_header=document.querySelector('#close_header'); if(close_header){ html_.style.overflow='hidden'; close_header.style.display='block'; zoom_reset(close_header); } normal_view(); }}} function zoom_reset(player){ let zoom_f=window.getComputedStyle(document.body).getPropertyValue('zoom'); if(zoom_f || zoom_f!=1){ // bodyで拡大ツールによるのzoom指定がある player.style.zoom=1/zoom_f; }} function normal_view(){ let close_header=document.querySelector('#close_header'); let close_mov=document.querySelector('#close_mov'); if(close_header && close_mov){ close_mov.onclick=function(){ html_.style.overflow='visible'; amb_header.style.zIndex=2000; close_header.style.display='none'; let m_iframe=document.querySelectorAll('#entryBody iframe'); for(let k=0; k<m_iframe.length; k++){ if(m_iframe[k].classList.contains('mov_player')){ m_iframe[k].classList.remove('mov_player'); }}}}} function cover_off(){ let cover=document.querySelectorAll('.c_i'); for(let k=0; k<cover.length; k++){ cover[k].style.position='relative'; } let pre_player=document.querySelectorAll('.pre_player'); for(let k=0; k<pre_player.length; k++){ pre_player[k].classList.remove('pre_player'); }} } // catch_mov() } // ameblo.jp if(document.domain=='static.blog-video.jp'){ window.addEventListener('load', function(){ let css= '<style id="ALJM" type="text/css">'+ '#js-video-bg { filter: opacity(0) !important; }</style>'; if(!document.querySelector('#ALJM')){ document.documentElement.insertAdjacentHTML('beforeend', css); }}); } // static.blog-video.jp
「Ameblo Lightbox JS Movie」最新版について
旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。
●「Ameblo Lightbox JS Movie」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。