漫画を読むためのブックマークレット

  • /*
     * @title 漫画を読むためのブックマークレット
     * @description imgまたはimg[data-src]の入った要素で、横400px高さ700pxを超える画像を見開きで読むためのブックマークレットです。エンターで見開き送り。 [ で1ページ送り。 ] で見開き戻し。 \ で消します。開始時は片開きです。両開きにしたいときは途中にあるコメントのhtml(count,++count)を使ってください。最小の縦横画像サイズを変更したいときは、変数の _width と _height の値を変更してください。
     */
    
    var dataSrc=[];
    var count=0,_width=400,_height=700;
    
    (function() {
        'use strict';
         document.querySelector("body").insertAdjacentHTML('beforebegin',`<div class="_manga"></div>`);
        document.querySelectorAll("img,img[data-src]").forEach((e,i)=>{
    	if(_width<e.width&&_height<e.height){
    		if(e.dataset.src){
            		dataSrc.push(e.dataset.src);
    		}else{
    			dataSrc.push(e.src)
    		}
    	}
        });
    })();
    
    var html =(p1,p2)=>{
    document.querySelector("._manga").innerHTML = `
    <div style=min-width: 100%;background: black;min-height: 100vh;">
        <img src="${p1}" style="position: fixed;top: 0;left: 50%;z-index: 100000;max-height: 100%;" />
        <img src="${p2}"  style="position: fixed;top: 0;right: 50%;z-index: 100000;max-height: 100%;"  />
    </div>
    `;
    };
    html("",dataSrc[count]);
    /*html(dataSrc[count],dataSrc[++count]);*/
    
    document.addEventListener('keypress', keypress_ivent);
    function keypress_ivent(e) {
        if(e.code === 'Enter'){
            if(document.querySelector("._manga").innerHTML==""){
            }else{
                count=count+2;
            }
            html(dataSrc[count],dataSrc[count+1]);
        }
    
        if(e.code === 'BracketRight'){
            if(document.querySelector("._manga").innerHTML==""){
                 count=count-1;
            }else{
                 count=count+1;
            }
            html(dataSrc[count],dataSrc[count+1]);
        }
        if(e.code === 'Backslash'){
            if(document.querySelector("._manga").innerHTML==""){
            }else{
                count=count-2;
            }
            html(dataSrc[count],dataSrc[count+1]);
        }
        if(e.code === 'IntlYen'){
            document.querySelector("._manga").remove();
            count=0;
        }
        return false;
    }
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2022/08/03 21:05:39 - 2022-08-03