Skip to content

Instantly share code, notes, and snippets.

@swdyh
Created August 1, 2012 05:22
Show Gist options
  • Select an option

  • Save swdyh/3223923 to your computer and use it in GitHub Desktop.

Select an option

Save swdyh/3223923 to your computer and use it in GitHub Desktop.

Revisions

  1. swdyh created this gist Aug 1, 2012.
    59 changes: 59 additions & 0 deletions sumally-add-via-link.user.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,59 @@
    // ==UserScript==
    // @name sumally-add-via-link
    // @namespace swdyh
    // @include http://sumally.com/*
    // @version 0.0.1
    // ==/UserScript==

    document.addEventListener('DOMNodeInserted', function(ev) {
    if (ev.target && ev.target.className == 'oneblock') {
    addVia(ev.target)
    }
    }, false)
    Array.prototype.slice.call(document.querySelectorAll('.oneblock')).forEach(addVia)

    function addVia(node) {
    var a = node.querySelector('a[href^="http://sumally.com/p"]')
    if (!a || node.querySelector('a.via')) {
    return
    }
    var u = a.href
    var via = document.createElement('a')
    via.className = 'via'
    via.style.color = '#F8A41A'
    via.appendChild(document.createTextNode(' via '))
    a.parentNode.appendChild(via)

    var f = function() {
    via.removeChild(via.firstChild)
    via.appendChild(document.createTextNode(' ... '))
    via.removeEventListener('mouseover', f)

    var xhr = new XMLHttpRequest()
    xhr.onload = function() {
    var r = xhr.responseText.match(/data-gaq="product_via_link" href="([^\"]+)"[^>]*>([^<]*)</)
    if (r) {
    var viaUrl = document.createElement('a')
    viaUrl.href = r[1]
    viaUrl.style.color = '#F8A41A'
    viaUrl.target = '_blank'
    var t = ' '
    var ut = r[1].length > 30 ? (r[1].slice(0, 30) + '...') : r[1]
    if (r[1] == r[2]) {
    t += ut
    }
    else {
    t += [r[2], ut].join(' ')
    }
    viaUrl.appendChild(document.createTextNode(t))
    via.parentNode.appendChild(document.createElement('br'))
    via.parentNode.appendChild(viaUrl)
    }
    via.parentNode.removeChild(via)
    }
    xhr.open('GET', u)
    xhr.send()
    }
    via.addEventListener('mouseover', f)
    }