LoginSignup
4
4

More than 5 years have passed since last update.

仕事用:表示されているページのQRコードを生成するブックマークレット

Last updated at Posted at 2016-07-11

スマートフォンでの表示確認を楽にするため、Google Charts APIを使って、QRコード生成ブックマークレットを作成しました。

主な機能

  • 現在表示されているページのURLをQRコード生成します。
  • Google APIを使用しているため、ローカル環境では動作しません。
  • Google APIのQRコード生成は今後廃止予定のため、いつ使えなくなるかわかりません。
  • 生成されたQRコードはイメージファイルなので、画像保存することが出来ます。
  • 「閉じる」機能が未実装のため、表示を消すにはリロードしてください。

COMPRESS&encodeURI済みソース

javascript:(function()%7Bvar%20a=%5B%5D;var%20d=document;var%20b=d.getElementsByTagName('body')%5B0%5D;var%20l=location.href;var%20qw=300;var%20qh=300;var%20u=%22https://chart.googleapis.com/chart?chs=%22+qw+%22x%22+qw+%22&cht=qr&chl=%22;var%20flag=true;var%20css='.qc-tools%20%7B%7D'+'.qc-scope%20%7B%20position:relative;%20%7D'+'.qc-scope:hover%20img%20%7B%20opacity:1%20!important;%20display:block%20!important%7D'+'.qc-href%20%7B%20position:%20absolute;%20z-index:%20999997%20!important;%20background:none%20!important;%20width:100%25;%20height:100%25;%20border:%200;%20margin:0;%20padding:0;%20float:none;%20box-sizing:border-box%7D'+'.qc-this%20%7B%20position:%20fixed;%20z-index:%20999999%20!important;%20background:none%20!important;%20border:%200;%20margin:0;%20padding:0;%20float:none;%20box-sizing:border-box%7D'+'.qc-this%20%7B%20bottom:10px%20!important;%20right:10px%20!important;%20%7D'+'.qc-href%20.qc-qr%7B%20position:%20fixed;%20display:none%20!important;%20top:10px%20!important;%20left:10px%20!important;%20z-index:%20999998%20!important;%7D'+'.qc-href:hover%20.qc-qr%7B%20z-index:%20999999%20!important;%20display:block%20!important;%7D'+'.qc-href%20.qc-qr,%20.qc-this%20.qc-qr%7B%20max-width:%20'+(qw+10)+'px;%20max-height:%20'+(qh+10)+'px;%20width:%20'+(qw+10)+'px;%20height:%20'+(qh+10)+'px;%20border:%205px%20solid%20#de4040;%20box-sizing:border-box%7D'+'.qc-href%20.qc-qr%20img,%20.qc-this%20.qc-qr%20img%7B%20max-width:%20'+qw+'px;%20max-height:%20'+qh+'px;%20opacity:%201;%20display:block;%7D';initQC();function%20initQC()%7BinitNode(%22qc-tools%22)%7Dfunction%20initNode(target)%7Bvar%20f=d.getElementsByClassName(target);if(f.length%3E0)%7Bconsole.log(%22Used%20%3E%3E%3E%20%22+target+%22%20%5B%22+f.length+%22%5D%22);for(var%20i=0;i%3Cf.length;i++)%7Bconsole.log(%22Used%20%3E%3E%3E%20Removed%20%20%5B%22+f%5Bi%5D+%22%5D%22);f%5Bi%5D.parentNode.removeChild(f%5Bi%5D)%7D%7D%7Dif(flag==true)%7Bvar%20s=d.createElement('style');s.classList.add(%22qc-tools%22);s.innerHTML=css;b.appendChild(s);var%20dc=d.createElement('aside');var%20ds=d.createElement('figure');var%20dimg=d.createElement('img');var%20durl=u+encodeURIComponent(l);dimg.setAttribute('src',durl);dc.classList.add(%22qc-this%22);ds.classList.add(%22qc-qr%22);ds.appendChild(dimg);dc.appendChild(ds);b.appendChild(dc)%7D%7D)();

展開ソース

javascript: (function() {
    var a = [];
    var d = document;
    var b = d.getElementsByTagName('body')[0];

    var l  =location.href;
    var qw =300;
    var qh =300;
    var u  ="https://chart.googleapis.com/chart?chs="+qw+"x"+qw+"&cht=qr&chl=";

    var flag=true;

    //固有接頭語「qc」
    var css = '.qc-tools {}' +
        '.qc-scope { position:relative; }' +
        '.qc-scope:hover img { opacity:1 !important; display:block !important}' +
        '.qc-href { position: absolute; z-index: 999997 !important; background:none !important; width:100%; height:100%; border: 0; margin:0; padding:0; float:none; box-sizing:border-box}' +
        '.qc-this { position: fixed; z-index: 999999 !important; background:none !important; border: 0; margin:0; padding:0; float:none; box-sizing:border-box}' +
        '.qc-this { bottom:10px !important; right:10px !important; }' +
        '.qc-href .qc-qr{ position: fixed; display:none !important; top:10px !important; left:10px !important; z-index: 999998 !important;}'+
        '.qc-href:hover .qc-qr{ z-index: 999999 !important; display:block !important;}'+
        '.qc-href .qc-qr, .qc-this .qc-qr{ max-width: '+(qw+10)+'px; max-height: '+(qh+10)+'px; width: '+(qw+10)+'px; height: '+(qh+10)+'px; border: 5px solid #de4040; box-sizing:border-box}'+
        '.qc-href .qc-qr img, .qc-this .qc-qr img{ max-width: '+qw+'px; max-height: '+qh+'px; opacity: 1; display:block;}';

    //初期化
    initQC(); 
    function initQC(){
        initNode("qc-tools");
    }
    function initNode(target){
        var f=d.getElementsByClassName(target);
        if(f.length > 0){
            console.log("Used >>> "+target+" ["+f.length+"]");
            for (var i = 0; i < f.length; i++) {
                console.log("Used >>> Removed  ["+f[i]+"]");
                f[i].parentNode.removeChild(f[i]);
            }
        }
    }

    if(flag==true){
        //Style設置
        var s = d.createElement('style');
        s.classList.add("qc-tools");
        s.innerHTML = css;
        b.appendChild(s);

        var dc = d.createElement('aside');
        var ds = d.createElement('figure');
        var dimg = d.createElement('img');
        var durl = u+encodeURIComponent(l);
        dimg.setAttribute('src',durl);
        dc.classList.add("qc-this");
        ds.classList.add("qc-qr");
        ds.appendChild(dimg);
        dc.appendChild(ds);
        b.appendChild(dc);
    }
})();

参考サイト

Google Charts API (QR Codes)
https://developers.google.com/chart/infographics/docs/qr_codes

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4