Skip to content

Instantly share code, notes, and snippets.

@landsurveyorsunited
Forked from choonkeat/loremipsumizer.js
Created October 12, 2015 01:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save landsurveyorsunited/713391a5fcde8ade01eb to your computer and use it in GitHub Desktop.
Save landsurveyorsunited/713391a5fcde8ade01eb to your computer and use it in GitHub Desktop.
Bookmarklet to turn any webpage back into a wireframe with "lorem ipsum" text. elements ".brand,.nav,.page-title,.btn,.pagination,.breadcrumb,form label,h1,th" are left intact by default (if you have jQuery on the page) because sometimes we want the basic navigations and buttons), but applying the script again will proceed to anonymize them rega…
/*
Turn any webpage back into a wireframe with "lorem ipsum" text.
1. Bookmark this page
2. Edit the bookmark, and change the link into
javascript:(function(u){ c=document;b=c.body;s=c.createElement('script');s.src=u+'?r='+(new Date()).getTime();b.appendChild(s);})('https://raw.github.com/gist/585708/ac1961130915ed2aef0e67bc97d35ead08513aba/loremipsumizer.js');void(0);
3. Visit any webpage
4. Click on the bookmark
*/
(function(nodes) {
if ((typeof $ == 'function') && $(document).attr) $('.brand,.nav,.page-title,.btn,.pagination,.breadcrumb,form label,h1,th').not('[data-loremipsumizer]').attr('data-loremipsumizer', 'no');
var wordset = "Fusce quis ipsum est, sed viverra dolor. In nunc turpis, rhoncus a porta nec, tincidunt non ante. Quisque commodo mi dignissim est rutrum consectetur. Nunc at sagittis ligula. Morbi odio magna, ultrices ac vulputate vel, rutrum vel neque. Donec iaculis nibh at nisl imperdiet quis consequat neque elementum. Integer nec eros sapien, in placerat neque. Fusce accumsan luctus quam, nec volutpat risus convallis eu. Nulla convallis tortor sed libero tristique condimentum. Nullam dignissim ultricies convallis. Morbi iaculis vehicula massa quis vestibulum. Integer rhoncus cursus magna at molestie. Cras non purus justo, sed commodo arcu. Maecenas sem turpis, mattis porttitor porttitor at, sagittis vel ipsum. Pellentesque quis eros lectus, non malesuada neque. Mauris at leo ut nisi accumsan hendrerit quis at nibh. Suspendisse potenti. Pellentesque luctus faucibus turpis, sed ornare lectus fermentum vitae. Nullam euismod lobortis est, at malesuada lacus tempus quis. Vestibulum ultrices lorem ac nisi mollis ac sagittis metus vehicula. Donec vel orci non diam faucibus malesuada. Nunc a velit id enim suscipit luctus ut ut enim. Aenean id lectus ut odio suscipit dictum at ac enim. Sed gravida nulla eros, id ultricies lectus. Maecenas nec neque eget mi aliquet venenatis. Phasellus lobortis vulputate leo non rhoncus. Aliquam laoreet dui ac sem sodales lobortis. Cras quis sem et mi accumsan semper. Quisque tincidunt turpis ac orci pulvinar faucibus. Nam mollis arcu nec nunc commodo bibendum gravida ipsum lobortis. Donec vehicula, justo a pretium vulputate, felis ante porttitor metus, ut tincidunt justo leo in dolor. Nulla varius sem sed neque ultricies consequat. Fusce sed mauris erat. Sed commodo nulla eget ante pulvinar a hendrerit lorem laoreet. Nullam sed dolor ut dui convallis malesuada et a arcu. Fusce consectetur placerat accumsan. Ut convallis erat at ipsum pharetra in malesuada quam vulputate. Duis blandit tempus lacus, vel euismod nibh cursus sit amet. Sed rhoncus pulvinar scelerisque. Nunc mattis risus gravida sapien euismod accumsan. Pellentesque malesuada dignissim tellus, a eleifend nunc iaculis vitae. Aliquam ut leo nibh. Duis est lorem, tempor vel tempor non, ornare eget erat. Duis id nunc non quam sodales tempor ac non elit. Fusce quis nibh justo. Mauris mi nulla, tempus vel elementum at, gravida et orci. Nullam ultricies rutrum adipiscing. Sed id dolor mauris, sit amet sodales nisl. Aliquam euismod viverra est vitae blandit. Phasellus eu eros nisl, nec ultricies tellus. Suspendisse nisl ipsum, cursus blandit tempor eu, semper non ligula. Donec vulputate dolor blandit elit laoreet commodo. Etiam et ante eu sem fringilla ultricies. Praesent rhoncus ultricies lobortis. Integer erat erat, convallis ac pharetra et, iaculis non enim. Fusce vehicula felis quis risus sollicitudin nec feugiat justo vestibulum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nam et erat eu ipsum tristique ultrices. Nullam auctor euismod magna. Morbi turpis turpis, consequat et cursus vitae, tristique ac tellus. Duis id ante eget justo convallis egestas. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam feugiat nisl ut magna auctor luctus. Sed vehicula elementum interdum. Etiam id tempor nisl".split(/\W+/);
var image = 'data:image/png;base64,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';
var lindex = 0, dictionary = {}, pair = null, regexp = /[0-9]+|[a-zA-Z]+/g;
function capitalise(string) { return string.charAt(0).toUpperCase() + string.slice(1); }
function get_style(ele,attr) {
if (ele.currentStyle) return ele.currentStyle[attr];
if (window.getComputedStyle) return document.defaultView.getComputedStyle(ele,null).getPropertyValue(attr);
}
function get_word(word) {
var blah = dictionary[word];
while (!blah && !(blah = wordset[lindex])) { lindex = (lindex + 1) % wordset.length; }
lindex = (lindex + 1) % wordset.length;
if (blah.length < word.length) {
blah = blah + blah.substring(0, word.length - blah.length).toLowerCase();
} else if (word.length < blah.length) {
blah = blah.substring(0, word.length);
}
return [[word, capitalise(word), word.toUpperCase(), word.toLowerCase()], [blah, capitalise(blah), blah.toUpperCase(), blah.toLowerCase()]];
}
function make_wireframe_box(node, is_image) {
if ((node.src == image) || (is_image && !node.src) || get_style(node, 'display') == 'none' || get_style(node, 'visibility') == 'hidden') return; // skip invisible or processed
var h = get_style(node, 'height');
var w = get_style(node, 'width');
var img = is_image ? node : document.createElement('img');
if (!is_image && node.getAttribute('style')) img.setAttribute('style', node.getAttribute('style'));
node.parentNode.replaceChild(img, node);
img.src = image;
setTimeout(function() { img.style.height = h; img.style.width = w; }, 100); // if we let datauri render, browser will auto-resize when we change dimensions later
}
function walk_tree(node) {
if (! node) return;
if (node.nodeName.match(/script/i)) return;
if (node.getAttribute && node.getAttribute("data-loremipsumizer") && node.getAttribute("data-loremipsumizer").match(/\b(no|false)\b/i)) return node.setAttribute("data-loremipsumizer", "yes");
var children = node.childNodes;
if (children && children.length > 0) for (var x = children.length-1; x >= 0; x--) {
walk_tree(children[x]);
} else if ((node.value || node.nodeType == 3) && (node.value || node.nodeValue).replace) { // text node
var newvalue = (node.value || node.nodeValue).replace(regexp, function(needle, index, haystack) {
if (dictionary[needle]) return dictionary[needle]; // existing
if (needle.match(/^\d+$/)) return (dictionary[needle] = (Math.random() + "").substring(2, needle.length+2)); // numbers
if (pair = get_word(needle)) for (var y = pair[0].length-1; y >= 0; y--) {
dictionary[pair[0][y]] = dictionary[pair[0][y]] || pair[1][y]; // populate various versions
}
return dictionary[needle];
});
node.value ? node.value = newvalue : node.nodeValue = newvalue;
}
if (node.nodeName.match(/^(object|iframe|embed|video|img)$/i)) make_wireframe_box(node, (node.nodeName == 'IMG'));
}
for (var x = nodes.length-1; x >= 0; x--) { walk_tree(nodes[x]); }
})([document.body]);
document.body.setAttribute('data-loremipsumizer','done');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment