search by img Fork

    @@ -12,18 +12,20 @@ // c.f. // http://ptech.g.hatena.ne.jp/noromanba/20121114/1352977145 (() => { - const attach = Array.from(ctx.querySelectorAll('img'), img => { - img.style.cursor = 'help'; + const attach = (ctx) => { + Array.from(ctx.querySelectorAll('img'), img => { + img.style.cursor = 'help'; - img.addEventListener('click', evt => { - // suppress click-handler and bubbling e.g. <a><img></a>; - evt.preventDefault(); - evt.stopPropagation(); + img.addEventListener('click', evt => { + // suppress click-handler and bubbling e.g. <a><img></a>; + evt.preventDefault(); + evt.stopPropagation(); - const imgurl = evt.target.src; - location.href = 'https://www.google.com/searchbyimage?image_url=' + encodeURIComponent(imgurl); + const imgurl = evt.target.src; + location.href = 'https://www.google.com/searchbyimage?image_url=' + encodeURIComponent(imgurl); + }); }); - }); + }; attach(document.body); new MutationObserver(records => {
    @@ -31,7 +33,7 @@ attach(record.target); }); }).observe(document.body, { childList: true, subtree: true }); - )(); + })(); // WIP // handle background-image url()
  • /*
     * @title search by img
     * @description search similar images by image
     * @include http://*
     * @include https://*
     * @contributor amachang http://let.hatelabo.jp/amachang/let/gYC-xauujbmgLw (Fork of)
     * @author      noromanba http://let.hatelabo.jp/noromanba/let/gYC-yuC1yoHyZw
     * @license MIT License http://www.opensource.org/licenses/mit-license
     * @javascript_url
     */
    
    // c.f.
    // http://ptech.g.hatena.ne.jp/noromanba/20121114/1352977145
    (() => {
        const attach = (ctx) => {
            Array.from(ctx.querySelectorAll('img'), img => {
                img.style.cursor = 'help';
    
                img.addEventListener('click', evt => {
                    // suppress click-handler and bubbling e.g. <a><img></a>;
                    evt.preventDefault();
                    evt.stopPropagation();
    
                    const imgurl = evt.target.src;
                    location.href = 'https://www.google.com/searchbyimage?image_url=' + encodeURIComponent(imgurl);
                });
            });
        };
        attach(document.body);
    
        new MutationObserver(records => {
            records.forEach(record => {
                attach(record.target);
            });
        }).observe(document.body, { childList: true, subtree: true });
    })();
    
    // WIP
    // handle background-image url()
    /*
    Array.from(document.querySelectorAll('*'), node => {
      const bgImg = getComputedStyle(node).backgroundImage;
      if (bgImg && bgImg !== 'none') {
        return {node, bgImg};
      }
    }).filter(spec => !!spec).forEach(spec => {
      // handle multi-bgimg c.f.
      // http://let.hatelabo.jp/noromanba/let/hLHW67STx8oc
      Array(spec.bgImg).some(img => {
        const bgURL = (img.match(/^url\(['"]?(https?:.*)['"]?\)/) || [])[1];
        if (!bgURL) return;
        // TODO
        // attach(spec) / attach(spec.node, spec.bgURL)
      });
    });
    //*/
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2017/10/27 07:40:57 - 10/27
  2. 2016/02/25 18:57:11 - 2016-02-25
  3. 2016/02/25 18:50:41 - 2016-02-25
  4. 2013/02/19 01:45:18 - 2013-02-19
  5. 2013/02/19 01:44:10 - 2013-02-19
  6. 2013/02/19 01:41:45 - 2013-02-19
  7. 2012/11/20 17:01:15 - 2012-11-20
  8. 2012/11/15 09:20:06 - 2012-11-15
  9. 2012/11/15 09:18:19 - 2012-11-15
  10. 2012/11/15 09:14:39 - 2012-11-15