Skip to content

Instantly share code, notes, and snippets.

@Aymkdn
Created October 24, 2012 14:22
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 Aymkdn/3946341 to your computer and use it in GitHub Desktop.
Save Aymkdn/3946341 to your computer and use it in GitHub Desktop.
Bookmarklet to show all the JS scripts into a page
javascript:(function(){function ajax(b){if(typeof XMLHttpRequest==="undefined"){XMLHttpRequest=function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(c){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(c){}throw new Error("This browser does not support XMLHttpRequest.")}}var a=new XMLHttpRequest();if(!b.url){throw new Error("You must define 'url'")}a.open("GET",b.url);a.onreadystatechange=function(){if(a.readyState===4){if(a.status===200){var c=(a.responseXML?a.responseXML:a.responseText);if(typeof b.success==="function"){b.success(c,b)}}if(typeof b.after==="function"){b.after()}}};a.send()}var s=document.getElementsByTagName("SCRIPT"),tx="",sr=[],i,t;for(i=0;i<s.length;i++){with(s.item(i)){t=text;if(t){tx+=t}else{sr.push(src)}}}var __loadedScript=sr.length;with(window.open()){document.write('<textarea id="t">'+tx+"</textarea>");for(var i=0;i<sr.length;i++){ajax({url:sr[i],success:function(a,b){document.getElementById("t").value+="\n\n----------------------------------------------------------------------\n"+b.url+"\n----------------------------------------------------------------------\n\n"+a;__loadedScript--;if(__loadedScript===0){document.write('<script src="http://jsbeautifier.org/beautify.js"><\/script><script>with(document.getElementById("t")){value=js_beautify(value);with(style){width="99%";height="99%";borderStyle="none";}};<\/script>');document.close()}}})}};})();
// http://blog.sociomantic.com/2010/08/native-javascript-ninjutsu-ajax-with-xhr/
// basic AJAX request to get the content of the JS files
function ajax(settings) {
if (typeof XMLHttpRequest === 'undefined') {
XMLHttpRequest = function() {
try { return new ActiveXObject('Msxml2.XMLHTTP.6.0') } catch ( e ) {}
try { return new ActiveXObject('Msxml2.XMLHTTP.3.0') } catch ( e ) {}
try { return new ActiveXObject('Msxml2.XMLHTTP') } catch ( e ) {}
throw new Error('This browser does not support XMLHttpRequest.')
};
}
var xmlhttp = new XMLHttpRequest();
if (!settings.url) throw new Error("You must define 'url'");
xmlhttp.open('GET', settings.url);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200) {
var xmlresponse = (xmlhttp.responseXML ? xmlhttp.responseXML : xmlhttp.responseText);
if (typeof settings.success === "function") settings.success(xmlresponse,settings);
}
if (typeof settings.after === "function") settings.after()
}
}
xmlhttp.send();
}
// search for the script tags in the page
// inspired by the jsbeautifier.org bookmarklet
var s=document.getElementsByTagName('SCRIPT'), tx='', sr=[], i, t;
for(i=0;i<s.length;i++) {
with(s.item(i)) {
t=text;
if(t) tx+=t;
else sr.push(src)
};
}
var __loadedScript = sr.length;
with(window.open()) {
document.write('<textarea id="t">'+tx+'</textarea>');
for (var i=0;i<sr.length;i++) {
ajax({
url: sr[i],
success: function(response,settings) {
document.getElementById('t').value += "\n\n----------------------------------------------------------------------\n"+settings.url+"\n----------------------------------------------------------------------\n\n" + response;
__loadedScript--;
if (__loadedScript===0) {
// use jsbeautifier to unminify the scripts
document.write('<script src="http://jsbeautifier.org/beautify.js"></script><script>with(document.getElementById("t")){value=js_beautify(value);with(style){width="99%";height="99%";borderStyle="none";}};</script>');
document.close();
}
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment