Big Instagram Images

Makes Instagram preview images full-sized

目前為 2016-12-04 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Big Instagram Images
// @author      Arnold François Lecherche
// @namespace   greasyfork.org
// @icon        https://instagramstatic-a.akamaihd.net/h1/images/ico/favicon.ico/dfa85bb1fd63.ico
// @version     0.0.1
// @description Makes Instagram preview images full-sized
// @include     http://instagram.com/*
// @include     http://*.instagram.com/*
// @include     https://instagram.com/*
// @include     https://*.instagram.com/*
// @run-at      document-end
// @copyright   2016 Arnold François Lecherche
// ==/UserScript==

(function (d, S, undefined) {
  'use strict';
  var si = /\/s\d+x\d+\//g, sh = /\/sh\d\.\d+\//g, cr = /\/c\d[\d\.]+\d\//g, t = +(new Date());
  function enlarge() {
    var imgs = d.images, i = imgs.length, s, a, p, l, n;
    while (i--) {
      s = S(imgs[i].src || '');
      if (si.test(s)) s = s.replace(si, '/');
      if (sh.test(s)) s = s.replace(sh, '/');
      if (cr.test(s)) s = s.replace(cr, '/');
      if (s && s !== imgs[i].src) imgs[i].src = s;
      a = imgs[i].parentNode.parentNode.parentNode;
      if (a.nodeName.toLowerCase() === 'a' && a.href.indexOf('taken-by=') > -1) {
        p = d.createElement('span');
        p.setAttribute('class', a.getAttribute('class'));
        l = a.childNodes;
        for (n = l.length; n--;) if (l[n].nodeType === 1) p.appendChild(l[n]);
        a.parentNode.insertBefore(p,a);
        a.appendChild(d.createTextNode('Info'));
        a.rel = 'noopener noreferrer nofollow';
        a.target = '_blank';
        p.appendChild(a);
      }
    }
    imgs = a = p = l = null;
  }
  function gatekeeper(evt) {
    var n = +(new Date());
    if (n - t < 100) return;
    t = n;
    enlarge();
  }
  enlarge();
  d.addEventListener('DOMContentLoaded', enlarge, false);
  d.addEventListener('load', enlarge, false);
  d.addEventListener('click', enlarge, false);
  d.addEventListener('mousemove', gatekeeper, false);
  d.addEventListener('keydown', gatekeeper, false);
  d.addEventListener('scroll', gatekeeper, false);
})(document, String);