User:JesseW/BookmarkletsUniversal
From Wikipedia, the free encyclopedia
While there are a lot of good bookmarklets out there, they are seperated onto many different sites, typically by creator. I want to remedy this, by listing all the bookmkarklets that I can find in one place, here. You are welcome to help(this is a wiki, after all.)
I'm going to start by listing all the bookmarklet containing sites that I can find, in the list below. Then I'll copy each of their bookmarklets below. I won't use line divisions, to make copying easier, which will unfortunetly make the page horribly wide. If anyone has a better idea how to handle this, I'd love to hear it. JesseW 03:08, 4 Dec 2004 (UTC)
Note The problem of bookmarklet windows being behind main windows in Mozilla has been solved. It currently requires a few small tweaks. See https://bugzilla.mozilla.org/show_bug.cgi?id=232605 for details. YAY!! JesseW 21:56, 10 Dec 2004 (UTC)
One nice tip I found (on gazingus.org) was regarding calling the bookmarklet from within itself, for various recursive purposes. This can be handled by the form: arguments.callee, which refers to the function being called.
[edit] Bookmarklet sites
[edit] Many bookmarklets
- http://www.accessify.com/tools-and-wizards/accessibility-checking-favelets.asp
- http://centricle.com/tools/favelets/
- http://stilleye.com/temp/bmarks.html
- http://www.fjordaan.uklinux.net/moveabletype/fblog/archives/000059.html - a few not from other pages, mostly an index like this page...
- http://endquote.com/ - currently down, but some are copied at fjordaan, above.
- http://13thparallel.org/ - no bookmarklets, but one at fjordaan is sourced from here...
- http://www.squarefree.com/bookmarklets/
- http://www.worldtimzone.com/bookmarklets/
- Mark Pilgrim - "Subscribe to blogs using http://diveintomark.org/projects/autorss/amphetadesk.html or http://diveintomark.org/projects/autorss/radio.html."
- http://bookmarklets.com/ - Done
- http://web.archive.org/web/http://userpage.fu-berlin.de/~wschwarz/scripts/english.htm - "Web development." Broken
- http://www.philburns.com/bookmarklets.html Done
- http://web.archive.org/web/http://a205.ryd.student.liu.se/bookmarklets.html - "Dealing with annoying pages, working with cookies and forms." Broken
- http://www.smokinggun.com/code/bookmarklets.php - Dealing with annoying pages. IE and Mozilla. Done
- http://subsimple.com/bookmarklets/ - "General and web development bookmarklets, slightly favoring Internet Explorer." Done
- http://samrod.com/ - "Search, web development." Done
- http://sam-i-am.com/work/bookmarklets/dev_debugging.html - "Web development." Done
- http://www23.brinkster.com/favelets/favelets.htm - "Web development." Broken
- http://liorean.web-graphics.com/ - "style sheet viewer, script viewer. Powerful but confusing." Done
- http://grayrest.com/moz/resources/bookmarks.shtml Broken
- http://www.pixy.cz/pixylophone/favelets/ - "track computed style property, simple dom inspector." Done
- http://tantek.com/favelets/ Done
- Stuart Langridge - http://www.kryogenix.org/days/473.html. Done
(above, quotes are from [1])
- http://dmoz.org/Computers/Software/Internet/Clients/WWW/Browsers/Bookmarklets/ tools by and for the editors
- http://www.sawks.com/bookmarklets/ opens lots of windows Broken
- http://www24.brinkster.com/bookmarklets/collection.asp (is now subSimple) Broken
- http://www.the5k.org/description.asp/entry_id=1041 uses images on page Done
- http://www.diveintomark.org/archives/2002/05/31.html looks for RSS feed for page
- http://weblog.infoworld.com/udell/stories/2002/12/11/librarylookup.html tells if a book is available at your library
- http://www.apple.com/safari/ bookmarklets from *http://www.apple.com/applescript/safari/bookmarks.html and *http://www.macworld.com/2004/02/secrets/marchgeekfactor/
(above descriptions are from [2]
- How To Create - Bookmarklets - http://www.howtocreate.co.uk/bookmarklets.html
- http://slayeroffice.com/index.php?c=/scripts/comment_scripts/comments2.php&id=109
- http://standardbrains.editthispage.com/ edit the pages you see Broken
- http://www.javascripter.net/faq/index.htm a clock and other examples No bookmarklets
- http://cleverchimp.com/dev_utilities/macie5lets/ for working with style sheets Broken
- http://www.gazingus.org Done
- http://www.w3.org/2000/02/collaboration/annotation/JavaScript/Annotea-JavaScript.html W3C annotation system No longer updated
- http://www.malevolent.com/downloads/ interesting ways to use IE5+ filters, and more No bookmarklets
[edit] One (or so) bookmarklets
- http://tinyurl.com/ bookmarklet for it's service
- http://www.onfocus.com/bookwatch/BookPost_info.asp automatically puts in amazon link and acts as a blog posting tool(server based)
- http://www.dansanderson.com/blogtracker/about.php block tracking system
- http://makeashorterlink.com/options.php
- http://www.ukoln.ac.uk/metadata/dcdot/ - dublin core metadata generator
- http://www.johneklund.com/amazon/ Amazon relinker
- http://www.dashes.com/anil/2001/01/22/i_was_looking_b Napster search (probably doesn't work anymore)
- http://impressive.net/people/gerald/2000/12/edit-bookmarklet.html edit a page browser replacement
- http://bugmenot.com/
- http://www.google.com/options/buttons.html
- http://tools.altavista.com/s?spage=help/babel_tool.htm
- http://www.m-w.com/button/
- http://www.dictionary.com/help/linking/bookmarklets.html
- http://www.blogger.com/howto/blogthis.pyra
- http://www.backflip.com/tour/tour_2.ihtml
- http://webopedia.internet.com/searchtool/
- http://pages.alexa.com/prod_serv/snapshot.html
- http://www.holovaty.com/blog/archive/2002/11/07/2226/ - content to code ratio finder
[edit] IE only
- http://www.q42.nl/demos/colorBlindnessSimulator/
- http://www.chaoszone.org/misc/aboutphash.html password hash system (IE only)
- http://milov.nl/entry/738 overlays an application on the page
- http://milov.nl/?cat=bookmarklets - "Fun bookmarklets for Internet Explorer. Weblog format with discussions."
- Josh Santangelo - http://endquote.com/content/446/ "for IE."
- http://www.fjordaan.uklinux.net/moveabletype/fblog/archives/000059.html "Bookmarklets and other useful things for IE's Links bar." *http://tantek.com/favelets/ - "Web development bookmarklets for IE Mac."
- http://www.trylookinghere.com/bookmarklets/bookmarkletintro.htm - "IE Win and IE Mac. Some bookmarklets are taken from other sites and lack attribution."
(quotes are from [3])
[edit] Bookmarklets
[edit] squarefree.com/bookmarklets
[edit] Link Bookmarklets
[edit] search links
javascript:(function(){var x,n,nD,z,i; function htmlEscape(s){s=s.replace(/&/g,'&');s=s.replace(/>/g,'>');s=s.replace(/</g,'<');return s;} function attrQuoteEscape(s){s=s.replace(/&/g,'&'); s=s.replace(/"/g, '"');return s;} x=prompt("show links with this word/phrase in link text or target url (leave blank to list all links):", ""); n=0; if(x!=null) { x=x.toLowerCase(); nD = window.open().document; nD.writeln('<html><head><title>Links containing "'+htmlEscape(x)+'"</title><base target="_blank"></head><body>'); nD.writeln('Links on <a href="'+attrQuoteEscape(location.href)+'">'+htmlEscape(location.href)+'</a><br> with link text or target url containing "' + htmlEscape(x) + '"<br><hr>'); z = document.links; for (i = 0; i < z.length; ++i) { if ((z[i].innerHTML && z[i].innerHTML.toLowerCase().indexOf(x) != -1) || z[i].href.toLowerCase().indexOf(x) != -1 ) { nD.writeln(++n + '. <a href="' + attrQuoteEscape(z[i].href) + '">' + (z[i].innerHTML || htmlEscape(z[i].href)) + '</a><br>'); } } nD.writeln('<hr></body></html>'); nD.close(); } })();
- Description
- "Lists all links on the page containing the specified text."
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#search_links
[edit] linked images
javascript:(function(){function I(u){var t=u.split('.'),e=t[t.length-1].toLowerCase();return {gif:1,jpg:1,jpeg:1,png:1,mng:1}[e]}function hE(s){return s.replace(/&/g,'&').replace(/>/g,'>').replace(/</g,'<').replace(/"/g,'"');}var q,h,i,z=open().document;z.write('<p>Images linked to by '+hE(location.href)+':</p><hr>');for(i=0;q=document.links[i];++i){h=q.href;if(h&&I(h))z.write('<p>'+q.innerHTML+' ('+hE(h)+')<br><img src="'+hE(h)+'">');}z.close();})()
- Description
- "Opens a window showing all images linked to from the current page. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#linked_images
[edit] linked pages
javascript:(function(){var dims,dimarray,wid,hei,dimstring,x,i,z,url; function linkIsSafe(u) { if (u.substr(0,7)=='mailto:') return false; if (u.substr(0,11)=='javascript:') return false; return true; } function htmlEscape(s){s=s.replace(/&/g,'&');s=s.replace(/>/g,'>');s=s.replace(/</g,'<');return s;} dims = prompt('width, height for each frame', '760, 500'); if (dims!=null) { dimarray = dims.split(','); wid = parseInt(dimarray[0]); hei = parseInt(dimarray[1]); dimstring = 'width='+wid+' height='+hei; x = document.links; z = window.open().document; for (i = 0; i < x.length; ++i) { url = x[i].href; if(linkIsSafe(url)) { z.writeln('<p>' + x[i].innerHTML + ' (' + htmlEscape(url) + ')<br><iframe ' + dimstring + ' src="' + url.replace(/"/g, '"') + '">[broken iframe]</iframe></p>'); } } z.close(); } })();
- Description
- "Opens a window showing all pages linked to from the current page. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#linked_pages
[edit] hide visited
javascript:(function(){var newSS, styles=':visited {display: none}'; if(document.createStyleSheet) { document.createStyleSheet("javascript:'"+styles+"'"); } else { newSS=document.createElement('link'); newSS.rel='stylesheet'; newSS.href='data:text/css,'+escape(styles); document.getElementsByTagName("head")[0].appendChild(newSS); } })();
- Description
- "Hides visited links."
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#hide_visited
[edit] int/ext links
javascript:(function(){var i,x; for (i=0;x=document.links[i];++i)x.style.color=["blue","red","orange"][sim(x,location)]; function sim(a,b) { if (a.hostname!=b.hostname) return 0; if (fixPath(a.pathname)!=fixPath(b.pathname) || a.search!=b.search) return 1; return 2; } function fixPath(p){ p = (p.charAt(0)=="/" ? "" : "/") + p;/*many browsers*/ p=p.split("?")[0];/*opera*/ return p; } })()
- Description
- "Colors internal links red, external links blue, and in-page links orange. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#int/ext_links
[edit] open all links
javascript:(function(){var n_to_open,dl,dll,i; function linkIsSafe(u) { if (u.substr(0,7)=='mailto:') return false; if (u.substr(0,11)=='javascript:') return false; return true; } n_to_open = 0; dl = document.links; dll = dl.length; for(i = 0; i < dll; ++i) { if (linkIsSafe(dl[i].href)) ++n_to_open; } if (!n_to_open) alert ('no links'); else { if (confirm('Open ' + n_to_open + ' links in new windows?')) for (i = 0; i < dll; ++i) if (linkIsSafe(dl[i].href)) window.open(dl[i].href); } })();
- Description
- "Opens each link on the page in a new window. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#open_all_links
[edit] open selected links
javascript:(function(){var n_to_open,dl,dll,i; function linkIsSafe(u) { if (u.substr(0,7)=='mailto:') return false; if (u.substr(0,11)=='javascript:') return false; return true; } n_to_open = 0; dl = document.links; dll = dl.length; if (window.getSelection && window.getSelection().containsNode) { /* mozilla */ for(i=0; i<dll; ++i) { if (window.getSelection().containsNode(dl[i], true) && linkIsSafe(dl[i].href)) ++n_to_open; } if (n_to_open && confirm('Open ' + n_to_open + ' selected links in new windows?')) { for(i=0; i<dll; ++i) if (window.getSelection().containsNode(dl[i], true) && linkIsSafe(dl[i].href)) window.open(dl[i].href); } } /* /mozilla */ if (!n_to_open) { /*ie, or mozilla with no links selected: this section matches open_all_links, except for the alert text */ for(i = 0; i < dll; ++i) { if (linkIsSafe(dl[i].href)) ++n_to_open; } if (!n_to_open) alert ('no links'); else { if (confirm('No links selected. Open ' + n_to_open + ' links in new windows?')) for (i = 0; i < dll; ++i) if (linkIsSafe(dl[i].href)) window.open(dl[i].href); } } })();
- Description
- "Opens each link within the selection in a new window. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#open_selected_links
[edit] target this window
javascript:(function(){var x,i; x=document.links; for(i=0;i<x.length;++i) { x[i].target="_self"; } })();
- Description
- "Makes links open in the same window (when you click them). "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#target_this_window
[edit] target new windows
javascript:(function(){var x,i; x=document.links; for(i=0;i<x.length;++i) { x[i].target="_blank"; } })();
- Description
- "Makes links open in new windows. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#target_new_windows
[edit] target new bg windows
javascript:(function(){function tn(e){e=e?e:window.event; open(this.href); focus(); return false;} var dl=document.links, i; for (i=0;i<dl.length;++i) dl[i].onclick=tn; })();
- Description
- "Makes links open in new windows behind the current window. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#target_new_bg_windows
[edit] target one new window
javascript:(function(){var x,i,r=Math.random(); x=document.links; for(i=0;i<x.length;++i) { x[i].target=r; } })();
- Description
- "Makes links open in one new window. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#target_one_new_window
[edit] remove redirects
javascript:(function(){var k,x,t,i,j,p; for(k=0;x=document.links[k];k++){t=x.href.replace(/[%]3A/ig,':').replace(/[%]2f/ig,'/');i=t.lastIndexOf('http');if(i>0){ t=t.substring(i); j=t.indexOf('&'); if(j>0)t=t.substring(0,j); p=/https?\:\/\/[^\s]*[^.,;'">\s\)\]]/.exec(unescape(t)); if(p) x.href=p[0]; } else if (x.onmouseover&&x.onmouseout){x.onmouseover(); if (window.status && window.status.indexOf('://')!=-1)x.href=window.status; x.onmouseout(); } x.onmouseover=null; x.onmouseout=null; }})();
- Description
- "Changes redirecting links to go directly to the "real" target. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#remove_redirects
[edit] hrefs as link text
javascript:(function(){var i,c,x,h; for(i=0;x=document.links[i];++i) { h=x.getAttribute("href"); x.title+=" " + x.innerHTML; while(c=x.firstChild)x.removeChild(c); x.appendChild(document.createTextNode(h)); } })()
- Description
- "Changes the text of links to match their hrefs. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#hrefs_as_link_text
[edit] full urls as link text
javascript:(function(){var i,c,x,h; for(i=0;x=document.links[i];++i) { h=x.href; x.title+=" " + x.innerHTML; while(c=x.firstChild)x.removeChild(c); x.appendChild(document.createTextNode(h)); } })()
- Description
- "Changes the text of links to match their absolute urls. "
- From
- http://www.squarefree.com/bookmarklets/pagelinks.html#full_urls_as_link_text
[edit] Form Bookmarklets
[edit] frmget
javascript:(function(){var x,i; x = document.forms; for (i = 0; i < x.length; ++i) x[i].method="get"; alert("Changed " + x.length + " forms to use the GET method. After submitting a form from this page, you should be able to bookmark the result."); })();
- Description
- "Makes "Post" forms submit to bookmarkable URLs (with ?var=value). "
- From
- http://www.squarefree.com/bookmarklets/forms.html#frmget
[edit] toggle checkboxes
javascript:(function(){ function toggle(box){ temp=box.onchange; box.onchange=null; box.checked=!box.checked; box.onchange=temp; } var x,k,f,j; x=document.forms; for (k=0; k<x.length; ++k) { f=x[k]; for (j=0;j<f.length;++j) if (f[j].type.toLowerCase() == "checkbox") toggle(f[j]); } })();
- Description
- "Toggles the state of each checkbox on the page. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#toggle_checkboxes
[edit] next option
javascript:(function(){ function rotate(es) { var i,n=es.length; for (i=0; i<n; ++i) { if(es[i].checked) { es[(i+1) % n].checked=true; break; } } if (i==es.length) es[0].checked=true; } var x,k,f,j,e,B,key; x=document.forms; for (k=0; f=x[k]; ++k) { B=[]; for (j=0;e=f[j];++j) if (e.type && e.type.toLowerCase() == "radio") { key=" "+e.name; if (!B[key]) B[key]=[]; B[key].push(e); } for(key in B) rotate(B[key]) }})()
- Description
- "Selects the next option in each group of option buttons. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#next_option
[edit] allow no option
javascript:(function(){function down(){bmlRadioValue=this.checked;bmlRadioRef=this;} function click() {if((window.bmlRadioRef==this)&&window.bmlRadioValue) {this.checked=false;bmlRadioRef=null;}}function mU(radio){radio.onmousedown=down; radio.onkeydown=down;radio.onclick=click;}var x,k,f,j;x=document.forms;for (k=0;k<x.length;++k){f=x[k];for(j=0;j<f.length;++j)if(f[j].type.toLowerCase()=="radio")mU(f[j]);}window.status="To unselect a selected option button, click on it or press spacebar."})();
- Description
- "Click on a selected option button to clear the selection. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#allow_no_option
[edit] remove maxlength
javascript:(function(){var x,k,f,j;x=document.forms;for(k=0;k<x.length;++k){f=x[k];for(j=0;j<f.length;++j)f[j].removeAttribute("maxLength");}})()
- Description
- "Removes maxLength restrictions from textboxes. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#remove_maxlength
[edit] enlarge textareas
javascript:(function(){var i,x; for(i=0;x=document.getElementsByTagName("textarea")[i];++i) x.rows += 5; })()
- Description
- "Makes textareas 5 lines taller. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#enlarge_textareas
[edit] show hiddens
javascript:(function(){var i,f,j,e,div,label,ne; for(i=0;f=document.forms[i];++i)for(j=0;e=f[j];++j)if(e.type=="hidden"){ D=document; function C(t){return D.createElement(t);} function A(a,b){a.appendChild(b);} div=C("div"); label=C("label"); A(div, label); A(label, D.createTextNode(e.name + ": ")); e.parentNode.insertBefore(div, e); e.parentNode.removeChild(e); ne=C("input");/*for ie*/ ne.type="text"; ne.value=e.value; A(label, ne); label.style.MozOpacity=".6"; --j;/*for moz*/}})()
- Description
- "Shows hidden form elements. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#show_hiddens
[edit] undisable
javascript:(function(){var x,k,f,j;x=document.forms;for (k=0;k<x.length;++k){f=x[k];for(j=0;j<f.length;++j){f[j].disabled=false; f[j].readOnly=false;}}})()
- Description
- "Enables all form elements. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#undisable
[edit] character count
javascript:(function(){var D=document,i,f,j,e;for(i=0;f=D.forms[i];++i)for(j=0;e=f[j];++j)if(e.type=="text"||e.type=="password"||e.tagName.toLowerCase()=="textarea")S(e);function S(e){if(!e.N){var x=D.createElement("span"),s=x.style;s.color="green";s.background="white";s.font="bold 10pt sans-serif";s.verticalAlign="top";e.parentNode.insertBefore(x,e.nextSibling);function u(){x.innerHTML=e.value.length;}u();e.onchange=u;e.onkeyup=u;e.oninput=u;e.N=x;}else{e.parentNode.removeChild(e.N);e.N=0;}}})()
- Description
- "Displays a running count of the characters in each textbox. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#character_count
[edit] view passwords
javascript:(function(){var s,F,j,f,i; s = ""; F = document.forms; for(j=0; j<F.length; ++j) { f = F[j]; for (i=0; i<f.length; ++i) { if (f[i].type.toLowerCase() == "password") s += f[i].value + "\n"; } } if (s) alert("Passwords in forms on this page:\n\n" + s); else alert("There are no passwords in forms on this page.");})();
- Description
- "Shows the contents of password fields. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#view_passwords
[edit] remember password
javascript:(function(){var ca,cea,cs,df,dfe,i,j,x,y;function n(i,what){return i+" "+what+((i==1)?"":"s")}ca=cea=cs=0;df=document.forms;for(i=0;i<df.length;++i){x=df[i];dfe=x.elements;if(x.onsubmit){x.onsubmit="";++cs;}if(x.attributes["autocomplete"]){x.attributes["autocomplete"].value="on";++ca;}for(j=0;j<dfe.length;++j){y=dfe[j];if(y.attributes["autocomplete"]){y.attributes["autocomplete"].value="on";++cea;}}}alert("Removed autocomplete=off from "+n(ca,"form")+" and from "+n(cea,"form element")+", and removed onsubmit from "+n(cs,"form")+". After you type your password and submit the form, the browser will offer to remember your password.")})();
- Description
- "Makes the browser ignore web site requests to not remember passwords. "
- From
- http://www.squarefree.com/bookmarklets/forms.html#remember_password
[edit] htmlarea ie
javascript:(function(){var d=document,i,f,j,t,m,s,u,q;for(i=0;f=d.forms[i];++i)for(j=0;t=f[j];++j)if(t.tagName=="TEXTAREA"&&!t.htmlarea){t.htmlarea=1;t.style.display="none";m=d.createElement("div");m.contentEditable=true;m.innerHTML=t.value;s=m.style;s.overflow="scroll";s.width=500;s.height=250;s.border="2px inset green";t.parentNode.insertBefore(m,t);u=U(m,t);setInterval(u,50);f.attachEvent("onsubmit",u);if(q=f.posttype)q.selectedIndex=1;}function U(m,t){return function(){t.value=m.innerHTML}}})()
- Description
- "Lets you edit textareas expecting HTML code as wysiwyg. (IE) "
- From
- http://www.squarefree.com/bookmarklets/forms.html#htmlarea_ie
[edit] htmlarea moz
javascript:(function(){for(i=0;f=document.forms[i];++i)for(j=0;t=f[j];++j)if(t.tagName=="TEXTAREA"&&!t.midasified){var m=document.createElement("iframe");t.parentNode.insertBefore(m,t);Midas(m,t.value);m.style.background="white";m.style.width=getComputedStyle(t,"").getPropertyValue("width");m.style.height=getComputedStyle(t,"").getPropertyValue("height");m.style.border="2px inset green";m.oldTextarea=t;t.midasified=true;t.style.display="none";var U=makeUpdate(m);setInterval(U,50);f.addEventListener("submit",U,false);if(q=f.posttype){q.selectedIndex=1;q.style.background="#dfd";}}function makeUpdate(M){return function(){M.oldTextarea.value=M.contentDocument.body.innerHTML;}}function Midas(M,V){M.onload=function(){M.contentDocument.body.innerHTML=V;M.contentDocument.designMode="on";this.onload=function(){M.contentDocument.body.innerHTML=V;}}}})()
- Description
- "Lets you edit textareas expecting HTML code as wysiwyg. (Mozilla) "
- From
- http://www.squarefree.com/bookmarklets/forms.html#htmlarea_moz
[edit] Text and Data Bookmarklets
[edit] highlight
javascript:(function(){var count=0, text, dv;text=prompt("Search phrase:", "");if(text==null || text.length==0)return;dv=document.defaultView;function searchWithinNode(node, te, len){var pos, skip, spannode, middlebit, endbit, middleclone;skip=0;if( node.nodeType==3 ){pos=node.data.toUpperCase().indexOf(te);if(pos>=0){spannode=document.createElement("SPAN");spannode.style.backgroundColor="yellow";middlebit=node.splitText(pos);endbit=middlebit.splitText(len);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else if( node.nodeType==1&& node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){for (var child=0; child < node.childNodes.length; ++child){child=child+searchWithinNode(node.childNodes[child], te, len);}}return skip;}window.status="Searching for '"+text+"'...";searchWithinNode(document.body, text.toUpperCase(), text.length);window.status="Found "+count+" occurrence"+(count==1?"":"s")+" of '"+text+"'.";})();
- Description
- "Highlights each occurrence of a search phrase. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#highlight
[edit] highlight regexp
javascript:(function(){var count=0, text, regexp;text=prompt("Search regexp:", "");if(text==null || text.length==0)return;try{regexp=new RegExp("(" + text +")", "i");}catch(er){alert("Unable to create regular expression using text '"+text+"'.\n\n"+er);return;}function searchWithinNode(node, re){var pos, skip, spannode, middlebit, endbit, middleclone;skip=0;if( node.nodeType==3 ){pos=node.data.search(re);if(pos>=0){spannode=document.createElement("SPAN");spannode.style.backgroundColor="yellow";middlebit=node.splitText(pos);endbit=middlebit.splitText(RegExp.$1.length);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else if( node.nodeType==1 && node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){for (var child=0; child < node.childNodes.length; ++child){child=child+searchWithinNode(node.childNodes[child], re);}}return skip;}window.status="Searching for "+regexp+"...";searchWithinNode(document.body, regexp);window.status="Found "+count+" match"+(count==1?"":"es")+" for "+regexp+".";})();
- Description
- "Highlights each match for a regular expression. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#highlight_regexp
[edit] zoom images in
javascript:(function(){ function zoomImage(image, amt) { if(image.initialHeight == null) { /* avoid accumulating integer-rounding error */ image.initialHeight=image.height; image.initialWidth=image.width; image.scalingFactor=1; } image.scalingFactor*=amt; image.width=image.scalingFactor*image.initialWidth; image.height=image.scalingFactor*image.initialHeight; } var i,L=document.images.length; for (i=0;i<L;++i) zoomImage(document.images[i], 2); if (!L) alert("This page contains no images."); })();
- Description
- "Doubles the size of each image on the page. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#zoom_images_in
[edit] zoom images out
javascript:(function(){ function zoomImage(image, amt) { if(image.initialHeight == null) { /* avoid accumulating integer-rounding error */ image.initialHeight=image.height; image.initialWidth=image.width; image.scalingFactor=1; } image.scalingFactor*=amt; image.width=image.scalingFactor*image.initialWidth; image.height=image.scalingFactor*image.initialHeight; } var i,L=document.images.length; for (i=0;i<L;++i) zoomImage(document.images[i],.5); if (!L) alert("This page contains no images."); })();
- Description
- "Halves the size of each image on the page. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#zoom_images_out
[edit] zoom layout
javascript:factor=Math.sqrt(2); if(!window.scale) { scale=1; zW=[]; zH=[]; unitless=/^[0-9.]+$/; function r(N) { w=N.width; h=N.height; if (unitless.test(w)) zW.push([N,w]); if (unitless.test(h)) zH.push([N,h]); var C=N.childNodes,i; for (i=0;i<C.length;++i) r(C[i]); } r(document.body); } scale*=factor; for(i in zW) zW[i][0].width=zW[i][1]*scale; for(i in zH) zH[i][0].height = zH[i][1]*scale; [].v
- Description
- "Increases the size of fixed-pixel-size layout elements and images. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#zoom_layout
[edit] view selection
javascript:(function(){ var d=open().document; d.title="Selection"; if (window.getSelection) { /*Moz*/ var s = getSelection(); for(i=0; i<s.rangeCount; ++i) { var a, r = s.getRangeAt(i); if (!r.collapsed) { var x = d.createElement("div"); x.appendChild(r.cloneContents()); while ((a = x.getElementsByTagName("script")).length) a[0].parentNode.removeChild(a[0]); d.body.appendChild(x); } } } else { /*IE*/ d.body.innerHTML = document.selection.createRange().htmlText; } })();
- Description
- "Displays the selection in a new window. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#view_selection
[edit] clone document
javascript:(function(){var i,nd; function copyChildren(a,b){for(i=0;i<a.childNodes.length;++i) b.appendChild(a.childNodes[i].cloneNode(true));}; nd=window.open().document; nd.open(); nd.close(); /*140681*/ copyChildren(document.getElementsByTagName("head")[0], nd.getElementsByTagName("head")[0]); copyChildren(document.body, nd.body);})();
- Description
- "Copies the document into a new window. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#clone_document
[edit] sort table
javascript:function toArray (c){var a, k;a=new Array;for (k=0; k<c.length; ++k)a[k]=c[k];return a;}function insAtTop(par,child){if(par.childNodes.length) par.insertBefore(child, par.childNodes[0]);else par.appendChild(child);}function countCols(tab){var nCols, i;nCols=0;for(i=0;i<tab.rows.length;++i)if(tab.rows[i].cells.length>nCols)nCols=tab.rows[i].cells.length;return nCols;}function makeHeaderLink(tableNo, colNo, ord){var link;link=document.createElement('a');link.href='javascript:sortTable('+tableNo+','+colNo+','+ord+');';link.appendChild(document.createTextNode((ord>0)?'a':'d'));return link;}function makeHeader(tableNo,nCols){var header, headerCell, i;header=document.createElement('tr');for(i=0;i<nCols;++i){headerCell=document.createElement('td');headerCell.appendChild(makeHeaderLink(tableNo,i,1));headerCell.appendChild(document.createTextNode('/'));headerCell.appendChild(makeHeaderLink(tableNo,i,-1));header.appendChild(headerCell);}return header;}g_tables=toArray(document.getElementsByTagName('table'));if(!g_tables.length) alert("This page doesn't contain any tables.");(function(){var j, thead;for(j=0;j<g_tables.length;++j){thead=g_tables[j].createTHead();insAtTop(thead, makeHeader(j,countCols(g_tables[j])))}}) ();function compareRows(a,b){if(a.sortKey==b.sortKey)return 0;return (a.sortKey < b.sortKey) ? g_order : -g_order;}function sortTable(tableNo, colNo, ord){var table, rows, nR, bs, i, j, temp;g_order=ord;g_colNo=colNo;table=g_tables[tableNo];rows=new Array();nR=0;bs=table.tBodies;for(i=0; i<bs.length; ++i)for(j=0; j<bs[i].rows.length; ++j){rows[nR]=bs[i].rows[j];temp=rows[nR].cells[g_colNo];if(temp) rows[nR].sortKey=temp.innerHTML;else rows[nR].sortKey="";++nR;}rows.sort(compareRows);for (i=0; i < rows.length; ++i)insAtTop(table.tBodies[0], rows[i]);}
- Description
- "Lets you sort tables in a web page alphabetically. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#sort_table
[edit] number rows
javascript:(function(){function has(par,ctag){for(var k=0;k<par.childNodes.length;++k)if(par.childNodes[k].tagName==ctag)return true;} function add(par,ctag,text){var c=document.createElement(ctag); c.appendChild(document.createTextNode(text)); par.insertBefore(c,par.childNodes[0]);} var i,ts=document.getElementsByTagName("TABLE"); for(i=0;i<ts.length;++i) { var n=0,trs=ts[i].rows,j,tr; for(j=0;j<trs.length;++j) {tr=trs[j]; if(has(tr,"TD"))add(tr,"TD",++n); else if(has(tr,"TH"))add(tr,"TH","Row");}}})()
- Description
- "Numbers the rows of each table. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#number_rows
[edit] transpose tables
javascript:(function(){var d=document,q="table",i,j,k,y,r,c,t;for(i=0;t=d.getElementsByTagName(q)[i];++i){var w=0,N=t.cloneNode(0);N.width="";N.height="";N.border=1;for(j=0;r=t.rows[j];++j)for(y=k=0;c=r.cells[k];++k){var z,a=c.rowSpan,b=c.colSpan,v=c.cloneNode(1);v.rowSpan=b;v.colSpan=a;v.width="";v.height="";if(!v.bgColor)v.bgColor=r.bgColor;while(w<y+b)N.insertRow(w++).p=0;while(N.rows[y].p>j)++y;N.rows[y].appendChild(v);for(z=0;z<b;++z)N.rows[y+z].p+=a;y+=b;}t.parentNode.replaceChild(N,t);}})()
- Description
- "Turns table rows into columns and vice versa. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#transpose_tables
[edit] bullets to numbers
javascript:uls=document.getElementsByTagName("ul"); for (i=uls.length-1; i>=0; --i) { oldul = uls[i]; newol = document.createElement("ol"); for(j=0;j<oldul.childNodes.length;++j) newol.appendChild(oldul.childNodes[j].cloneNode(true)); oldul.parentNode.replaceChild(newol, oldul); } void 0
- Description
- "Turns bulleted lists into numbered lists. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#bullets_to_numbers
[edit] number lines
javascript:(function(){var i,p,L,d,j,n; for(i=0; p=document.getElementsByTagName("pre")[i]; ++i) { L=p.innerHTML.split("\r\n"); d=""+L.length; for(j=0;j<L.length;++j) { n = ""+(j+1)+". "; while(n.length<d.length+2) n="0"+n; L[j] = n + L[j]; } p.innerHTML=L.join("<br>");/*join with br for ie*/ } })()
- Description
- "Numbers lines in <pre> tags or plain-text documents. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#number_lines
[edit] rot13 selection
javascript:var coding = "abcdefghijklmnopqrstuvwxyzabcdefghijklmABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM"; function rot13(t) { for (var r = "",i=0;i<t.length;i++) { character = t.charAt(i); position = coding.indexOf(character); if (position > -1) character = coding.charAt(position + 13); r += character; } return r; } S=window.getSelection(); function t(N) { return N.nodeType == N.TEXT_NODE; } function r(N) { if (t(N)) N.data = rot13(N.data); } for (j=0;j<S.rangeCount;++j) { var g=S.getRangeAt(j), e=g.startContainer, f=g.endContainer, E=g.startOffset, F=g.endOffset, m=(e==f); if(!m||!t(e)) { /* rot13 each text node between e and f, not including e and f. */ q=document.createTreeWalker(g.commonAncestorContainer, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false); q.currentNode=e; for(N=q.nextNode(); N && N != f; N = q.nextNode()) r(N); } if (t(f)) f.splitText(F); if (!m) r(f); if (t(e)) { r(k=e.splitText(E)); if(m)f=k; e=k;} if (t(f)) g.setEnd(f,f.data.length); } void 0
- Description
- "Replaces each letter in the selected text with its rot13 equivalent. "
- From
- http://www.squarefree.com/bookmarklets/pagedata.html#rot13_selection
[edit] Bookmarklets for Zapping Annoyances
[edit] zap plugins
javascript:(function(){function R(w){try{var d=w.document,j,i,t,T,N,b,r=1,C;for(j=0;t=["object","embed","applet","iframe"][j];++j){T=d.getElementsByTagName(t);for(i=T.length-1;(i+1)&&(N=T[i]);--i)if(j!=3||!R((C=N.contentWindow)?C:N.contentDocument.defaultView)){b=d.createElement("div");b.style.width=N.width; b.style.height=N.height;b.innerHTML="<del>"+(j==3?"third-party "+t:t)+"</del>";N.parentNode.replaceChild(b,N);}}}catch(E){r=0}return r}R(self);var i,x;for(i=0;x=frames[i];++i)R(x)})()
- Description
- "Removes java, flash, background music, and third-party iframes. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_plugins
[edit] zap colors
javascript:(function(){var newSS, styles='* { background: white ! important; color: black !important } :link, :link * { color: #0000EE !important } :visited, :visited * { color: #551A8B !important }'; if(document.createStyleSheet) { document.createStyleSheet("javascript:'"+styles+"'"); } else { newSS=document.createElement('link'); newSS.rel='stylesheet'; newSS.href='data:text/css,'+escape(styles); document.getElementsByTagName("head")[0].appendChild(newSS); } })();
- Description
- "Makes text black on a white background, and makes links blue and purple. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_colors
[edit] zap cheap effects
javascript:(function(){var d=document; function K(N,w) { var nn = d.createElement(w), C = N.childNodes, i; for(i=C.length-1;i>=0;--i) nn.insertBefore(C[i],nn.childNodes[0]); N.parentNode.replaceChild(nn,N); } function Z(t,w) { var T = document.getElementsByTagName(t), j; for (j=T.length-1;j>=0;--j) K(T[j],w); } Z("blink", "span"); Z("marquee", "div"); })();
- Description
- "Neutralizes <marquee> and <blink>. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_cheap_effects
[edit] zap events
javascript:(function(){var H=["mouseover","mouseout","unload","resize"],o=window.opera; if(document.addEventListener/*MOZ*/&&!o) for(j in H)document.addEventListener(H[j],function(e){e.stopPropagation();},true); else if(window.captureEvents/*NS4*/&&!o) { document.captureEvents(-1/*ALL*/);for(j in H)window["on"+H[j]]=null;} else/*IE*/ {function R(N){var i,x;for(j in H)if(N["on"+H[j]]/*NOT TEXTNODE*/)N["on"+H[j]]=null;for(i=0;x=N.childNodes[i];++i)R(x);}R(document);}})()
- Description
- "Removes event handlers, killing blind links and exit pop-up ads. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_events
[edit] zap timers
javascript:(function() { var c, tID, iID; tID = setTimeout(function(){}, 0); for (c=1; c<1000 && c<=tID; ++c) clearTimeout(tID - c); iID = setInterval(function(){},1000); for (c=0; c<1000 && c<=iID; ++c) clearInterval(iID - c); })()
- Description
- "Removes timers that were created with setTimeout or setInterval. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_timers
[edit] zap
javascript:(function(){function R(w){try{var d=w.document,j,i,t,T,N,b,r=1,C;for(j=0;t=["object","embed","applet","iframe"][j];++j){T=d.getElementsByTagName(t);for(i=T.length-1;(i+1)&&(N=T[i]);--i)if(j!=3||!R((C=N.contentWindow)?C:N.contentDocument.defaultView)){b=d.createElement("div");b.style.width=N.width; b.style.height=N.height;b.innerHTML="<del>"+(j==3?"third-party "+t:t)+"</del>";N.parentNode.replaceChild(b,N);}}}catch(E){r=0}return r}R(self);var i,x;for(i=0;x=frames[i];++i)R(x)})(); javascript:(function(){var newSS, styles='* { background: white ! important; color: black !important } :link, :link * { color: #0000EE !important } :visited, :visited * { color: #551A8B !important }'; if(document.createStyleSheet) { document.createStyleSheet("javascript:'"+styles+"'"); } else { newSS=document.createElement('link'); newSS.rel='stylesheet'; newSS.href='data:text/css,'+escape(styles); document.getElementsByTagName("head")[0].appendChild(newSS); } })(); javascript:(function(){var d=document; function K(N,w) { var nn = d.createElement(w), C = N.childNodes, i; for(i=C.length-1;i>=0;--i) nn.insertBefore(C[i],nn.childNodes[0]); N.parentNode.replaceChild(nn,N); } function Z(t,w) { var T = document.getElementsByTagName(t), j; for (j=T.length-1;j>=0;--j) K(T[j],w); } Z("blink", "span"); Z("marquee", "div"); })(); javascript:(function(){var H=["mouseover","mouseout","unload","resize"],o=window.opera; if(document.addEventListener/*MOZ*/&&!o) for(j in H)document.addEventListener(H[j],function(e){e.stopPropagation();},true); else if(window.captureEvents/*NS4*/&&!o) { document.captureEvents(-1/*ALL*/);for(j in H)window["on"+H[j]]=null;} else/*IE*/ {function R(N){var i,x;for(j in H)if(N["on"+H[j]]/*NOT TEXTNODE*/)N["on"+H[j]]=null;for(i=0;x=N.childNodes[i];++i)R(x);}R(document);}})(); javascript:(function() { var c, tID, iID; tID = setTimeout(function(){}, 0); for (c=1; c<1000 && c<=tID; ++c) clearTimeout(tID - c); iID = setInterval(function(){},1000); for (c=0; c<1000 && c<=iID; ++c) clearInterval(iID - c); })();
- Description
- "Zaps plugins, colors, cheap effects, event handlers, and timers. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap
[edit] zap images
javascript:(function(){function toArray (c){var a, k;a=new Array;for (k=0; k < c.length; ++k)a[k]=c[k];return a;}var images, img, altText;images=toArray(document.images);for (var i=0; i < images.length; ++i){img=images[i];altText=document.createTextNode(img.alt);img.parentNode.replaceChild(altText, img)}})();
- Description
- "Replaces each image with its <a href="http://ppewww.ph.gla.ac.uk/%7Eflavell/alt/alt-text.html">alternate text</a>. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_images
[edit] linearize
javascript:(function(){var D=document,e,styles="table,thead,tbody,tr,th,td{display:block!important;}*{width:auto!important;height:auto!important;position:static!important;float:none!important;margin-left:0!important;margin-right:0!important;} img,iframe,embed,object{display:none;} body {margin:4px!important;}"; e=D.createElement('link'); e.rel='stylesheet'; e.href=window.opera ? "javascript:'"+styles+"'" : "data:text/css,"+styles; D.getElementsByTagName("head")[0].appendChild(e)})()
- Description
- "Linearizes the text of the page and removes most non-text elements. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#linearize
[edit] printer friendly
javascript:(function(){function linkIsSafe(h){return(!/^mailto:/.exec(h)&&!/^javascript:/.exec(h));} var i,x,h; for(i=0;x=document.getElementsByTagName('a')[i];i++) { h=x.innerHTML.toLowerCase(); if(h.indexOf('print')>-1 && h.indexOf('edition')==-1 && h.indexOf('subscri')==-1 && h.indexOf('reprint')==-1 && h.indexOf('slogan')==-1 && linkIsSafe(x.href)) { x.focus();location=x.href;return; }} alert("Can't find link to printer friendly version.");})()
- Description
- "Finds and follows a link to a "print-friendly" version of a page. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#printer_friendly
[edit] zap presentational html
javascript:(function(){var H=["bgcolor","bgColor","background","color","align","text","alink","vlink"],Y={FONT:1,CENTER:1},d=[],p; function R(N){var a,x,i,t; if(t=N.tagName){ t=t.toUpperCase(); for (i=0;a=H[i];++i)if(N.getAttribute(a))N.removeAttribute(a); for(i=0;x=N.childNodes[i];++i)R(x); if (Y[t])d.push(N); } } R(document.documentElement); for (i=0;N=d[i];++i) { p=N.parentNode; while(N.firstChild)p.insertBefore(N.firstChild,N); p.removeChild(N); } })()
- Description
- "Removes most presentational attributes and tags while leaving style sheets intact. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_presentational_html
[edit] zap style sheets
javascript:(function(){var i,x;for(i=0;x=document.styleSheets[i];++i)x.disabled=true;})();
- Description
- "Disables all style sheets. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_style_sheets
[edit] zap cookies
javascript:(function(){C=document.cookie.split("; ");for(d="."+location.host;d;d=(""+d).substr(1).match(/\..*$/))for(sl=0;sl<2;++sl)for(p="/"+location.pathname;p;p=p.substring(0,p.lastIndexOf('/')))for(i in C)if(c=C[i]){document.cookie=c+"; domain="+d.slice(sl)+"; path="+p.slice(1)+"/"+"; expires="+new Date((new Date).getTime()-1e11).toGMTString()}})()
- Description
- "Removes cookies set by the site, including cookies with paths and domains. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_cookies
[edit] zap white backgrounds
javascript:(function(){function getRGBColor(node,prop){var rgb=getComputedStyle(node,null).getPropertyValue(prop);var r,g,b;if(/rgb\((\d+),\s(\d+),\s(\d+)\)/.exec(rgb)){r=parseInt(RegExp.$1,10);g=parseInt(RegExp.$2,10);b=parseInt(RegExp.$3,10);return[r/255,g/255,b/255];}return rgb;} R(document.documentElement); function R(n){var i,x,color;if(n.nodeType==Node.ELEMENT_NODE && n.tagName.toLowerCase()!="input" && n.tagName.toLowerCase()!="select" && n.tagName.toLowerCase!="textarea"){for(i=0;x=n.childNodes[i];++i)R(x); color=getRGBColor(n,"background-color");if( (typeof(color)!="string" && color[0] + color[1] + color[2] >= 2.8) || (n==document.documentElement && color=="transparent")) { n.style.backgroundColor = "tan";/*Moz 1.0*/ n.style.setProperty("background-color", "tan", "important");/*Moz 1.4 after zap colors*/ } }}})()
- Description
- "Changes white and near-white backgrounds to tan. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#zap_white_backgrounds
[edit] restore context menu
javascript:(function() { function R(a){ona = "on"+a; if(window.addEventListener) window.addEventListener(a, function (e) { for(var n=e.originalTarget; n; n=n.parentNode) n[ona]=null; }, true); window[ona]=null; document[ona]=null; if(document.body) document.body[ona]=null; } R("contextmenu"); R("click"); R("mousedown"); R("mouseup"); })()
- Description
- "Fixes pages that <a href="http://www.dynamicdrive.com/dynamicindex9/noright.htm">disable context menus</a>. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#restore_context_menu
[edit] restore selecting
javascript:(function() { function R(a){ona = "on"+a; if(window.addEventListener) window.addEventListener(a, function (e) { for(var n=e.originalTarget; n; n=n.parentNode) n[ona]=null; }, true); window[ona]=null; document[ona]=null; if(document.body) document.body[ona]=null; } R("click"); R("mousedown"); R("mouseup"); R("selectstart"); })()
- Description
- "Fixes pages that <a href="http://slackerhtml.tripod.com/dhtml/misc/disabletextselect.html">disable text selection</a>. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#restore_selecting
[edit] remove redirects
javascript:(function(){var k,x,t,i,j,p; for(k=0;x=document.links[k];k++){t=x.href.replace(/[%]3A/ig,':').replace(/[%]2f/ig,'/');i=t.lastIndexOf('http');if(i>0){ t=t.substring(i); j=t.indexOf('&'); if(j>0)t=t.substring(0,j); p=/https?\:\/\/[^\s]*[^.,;'">\s\)\]]/.exec(unescape(t)); if(p) x.href=p[0]; } else if (x.onmouseover&&x.onmouseout){x.onmouseover(); if (window.status && window.status.indexOf('://')!=-1)x.href=window.status; x.onmouseout(); } x.onmouseover=null; x.onmouseout=null; }})();
- Description
- "Changes redirecting links to go directly to the "real" target. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#remove_redirects
[edit] lowercase
javascript:(function(){ var i,t,D=document; for(i=0;t=D.getElementsByTagName('textarea')[i];++i)t.value=t.value.toLowerCase();/*(in ie, text-transform only applies to first line of textarea)*/ var newSS,styles='*{text-transform:lowercase}input,textarea{text-transform:none}';if(D.createStyleSheet){D.createStyleSheet("javascript:'"+styles+"'");}else{newSS=D.createElement('link'); newSS.rel='stylesheet';newSS.href='data:text/css,'+escape(styles);D.getElementsByTagName("head")[0].appendChild(newSS);}})()
- Description
- "Makes body text and text in textareas all-lowercase. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#lowercase
[edit] deleet
javascript:(function(){ var T=( "| 1 m /\\/\\ m |\\/| w \\/\\/ w |/\\| h |-| h |~| u |_| m |v| n |\\| n /\\/ d |) f |= h }{ i ][ j _| j _] k |< k |{ l |_ p |> p [* r |2 v \\/ x >< y `/ a @ a 4 b 8 e 3 g 6 g 9 o 0 s 5 s $ t + t 7" ).split(" "),i,x,t; function R(t){t=t.toLowerCase();for(i=0;i<T.length;i+=2)while(t.indexOf(T[i+1])!=-1)t=t.replace(T[i+1],T[i]);return t} function F(n,i){t=n.tagName;if(i=n.data)n.data=R(i);if(t!="SCRIPT"&&t!="STYLE")for(i=0;x=n.childNodes[i];++i)F(x)} F(document) })()
- Description
- "Makes <a href="http://home.cwru.edu/%7Ejar20/l33tpaper.htm">1337 5p34|{</a> somewhat more readable. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#deleet
[edit] force wrap
javascript:(function(){var D=document; F(D.body); function F(n){var u,r,c,x; if(n.nodeType==3){ u=n.data.search(/\S{45}/); if(u>=0) { r=n.splitText(u+45); n.parentNode.insertBefore(D.createElement("WBR"),r); } }else if(n.tagName!="STYLE" && n.tagName!="SCRIPT"){for (c=0;x=n.childNodes[c];++c){F(x);}} } })();
- Description
- "Fixes table layouts expanded by very long words. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#force_wrap
[edit] trigger rollovers
javascript:(function(){function k(x) { if (x.onmouseover) { x.onmouseover(); x.backupmouseover = x.onmouseover; x.backupmouseout = x.onmouseout; x.onmouseover = null; x.onmouseout = null; } else if (x.backupmouseover) { x.onmouseover = x.backupmouseover; x.onmouseout = x.backupmouseout; x.onmouseover();/*for MM_swapImgRestore*/ x.onmouseout(); } } var i,x; for(i=0; x=document.links[i]; ++i) k(x); for (i=0; x=document.images[i]; ++i) k(x); })()
- Description
- "Triggers JavaScript rollovers, fixing most <a href="http://www.fixingyourwebsite.com/mysterymeat.html">mystery meat navigation</a>. "
- From
- http://www.squarefree.com/bookmarklets/zap.html#trigger_rollovers
[edit] Web Development Bookmarklets
[edit] shell
javascript:with(window.open("","_blank","width="+screen.width*.6+",left="+screen.width*.35+",height="+screen.height*.9+",resizable,scrollbars=yes")){document.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n\n<html onclick=\"keepFocusInTextbox(event)\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n<title>JavaScript Shell 1.3</title>\n\n<script type=\"text/javascript\">\nvar \nhistList = [\"\"], \nhistPos = 0, \n_scope = {}, \n_win, // a top-level context\nquestion,\n_in,\n_out,\ntooManyMatches = null;\n\nfunction refocus()\n{\n _in.blur(); // Needed for Mozilla to scroll correctly.\n _in.focus();\n}\n\nfunction init()\n{\n _in = document.getElementById(\"input\");\n _out = document.getElementById(\"output\");\n\n _win = window;\n\n if (opener && !opener.closed)\n {\n println(\"Using bookmarklet version of shell: commands will run in opener's context.\", \"message\");\n _win = opener;\n }\n\n initTarget();\n\n recalculateInputHeight();\n refocus();\n}\n\nfunction initTarget()\n{\n _win.Shell = window;\n _win.print = shellCommands.print;\n}\n\n\n// Unless the user is selected something, refocus the textbox.\n// (requested by caillon, brendan, asa)\nfunction keepFocusInTextbox(e) \n{\n var g = e.srcElement ? e.srcElement : e.target; // IE vs. standard\n \n while (!g.tagName)\n g = g.parentNode;\n var t = g.tagName.toUpperCase();\n if (t==\"A\" || t==\"INPUT\")\n return;\n \n if (window.getSelection) {\n // Mozilla\n if (String(window.getSelection()))\n return;\n }\n else if (document.getSelection) {\n // Opera? Netscape 4?\n if (document.getSelection())\n return;\n }\n else {\n // IE\n if ( document.selection.createRange().text )\n return;\n }\n \n refocus();\n}\n\nfunction inputKeydown(e) {\n // Use onkeydown because IE doesn't support onkeypress for arrow keys\n\n //alert(e.keyCode + \" ^ \" + e.keycode);\n\n if (e.shiftKey && e.keyCode == 13) { // shift-enter\n // don't do anything; allow the shift-enter to insert a line break as normal\n } else if (e.keyCode == 13) { // enter\n // execute the input on enter\n try { go(); } catch(er) { alert(er); };\n setTimeout(function() { _in.value = \"\"; }, 0); // can't preventDefault on input, so clear it later\n } else if (e.keyCode == 38) { // up\n // go up in history if at top or ctrl-up\n if (e.ctrlKey || _in.selectionStart == null || _in.selectionStart == 0)\n hist(true);\n } else if (e.keyCode == 40) { // down\n // go down in history if at end or ctrl-down\n if (e.ctrlKey || _in.selectionStart == null || _in.selectionEnd == _in.textLength)\n hist(false);\n } else if (e.keyCode == 9) { // tab\n tabcomplete();\n setTimeout(function() { refocus(); }, 0); // refocus because tab was hit\n } else { }\n\n setTimeout(recalculateInputHeight, 0);\n \n //return true;\n};\n\nfunction recalculateInputHeight()\n{\n var rows = _in.value.split(/\\n/).length\n + 1 // prevent scrollbar flickering in Mozilla\n + (window.opera ? 1 : 0); // leave room for scrollbar in Opera\n \n if (_in.rows != rows) // without this check, it is impossible to select text in Opera 7.60 or Opera 8.0.\n _in.rows = rows;\n}\n\nfunction println(s, type)\n{\n if((s=String(s)))\n {\n var newdiv = document.createElement(\"div\");\n newdiv.appendChild(document.createTextNode(s));\n newdiv.className = type;\n _out.appendChild(newdiv);\n return newdiv;\n }\n}\n\nfunction printWithRunin(h, s, type)\n{\n var div = println(s, type);\n var head = document.createElement(\"strong\");\n head.appendChild(document.createTextNode(h + \": \"));\n div.insertBefore(head, div.firstChild);\n}\n\n\nvar shellCommands = \n{\nload : function load(url)\n{\n var s = _win.document.createElement(\"script\");\n s.type = \"text/javascript\";\n s.src = url;\n _win.document.getElementsByTagName(\"head\")[0].appendChild(s);\n println(\"Loading \" + url + \"...\", \"message\");\n},\n\nprint : function print(s) { println(s, \"print\"); },\n\n// the normal function, \"print\", shouldn't return a value\n// (suggested by brendan; later noticed it was a problem when showing others)\npr : function pr(s) \n{ \n shellCommands.print(s); // need to specify shellCommands so it doesn't try window.print()!\n return s;\n},\n\nprops : function props(e)\n{\n var ns = [\"Methods\", \"Fields\", \"Unreachables\"];\n var as = [[], [], []]; // array of (empty) arrays of arrays!\n var p, j, i; // loop variables, several used multiple times\n\n var protoLevels = 0;\n\n for (p = e; p; p = p.__proto__)\n {\n for (i=0; i<ns.length; ++i)\n as[i][protoLevels] = [];\n ++protoLevels;\n }\n\n for(var a in e)\n {\n // Shortcoming: doesn't check that VALUES are the same in object and prototype.\n\n var protoLevel = -1;\n try\n {\n for (p = e; p && (a in p); p = p.__proto__)\n ++protoLevel;\n }\n catch(er) { protoLevel = 0; } // \"in\" operator throws when param to props() is a string\n\n var type = 1;\n try\n {\n if ((typeof e[a]) == \"function\")\n type = 0;\n }\n catch (er) { type = 2; }\n\n as[type][protoLevel].push(a);\n }\n\n function times(s, n) { return n ? s + times(s, n-1) : \"\"; }\n\n for (j=0; j<protoLevels; ++j)\n for (i=0;i<ns.length;++i)\n if (as[i][j].length) \n printWithRunin(ns[i] + times(\" of prototype\", j), as[i][j].join(\", \"), \"propList\");\n},\n\nblink : function blink(node)\n{\n if (!node) throw(\"blink: argument is null or undefined.\");\n if (node.nodeType == null) throw(\"blink: argument must be a node.\");\n if (node.nodeType == 3) throw(\"blink: argument must not be a text node\");\n if (node.documentElement) throw(\"blink: argument must not be the document object\");\n\n function setOutline(o) { \n return function() {\n if (node.style.outline != node.style.bogusProperty) {\n // browser supports outline (Firefox 1.1 and newer, CSS3, Opera 8).\n node.style.outline = o;\n }\n else if (node.style.MozOutline != node.style.bogusProperty) {\n // browser supports MozOutline (Firefox 1.0.x and older)\n node.style.MozOutline = o;\n }\n else {\n // browser only supports border (IE). border is a fallback because it moves things around.\n node.style.border = o;\n }\n }\n } \n \n function focusIt(a) {\n return function() {\n a.focus(); \n }\n }\n\n if (node.ownerDocument) {\n var windowToFocusNow = (node.ownerDocument.defaultView || node.ownerDocument.parentWindow); // Moz vs. IE\n if (windowToFocusNow)\n setTimeout(focusIt(windowToFocusNow.top), 0);\n }\n\n for(var i=1;i<7;++i)\n setTimeout(setOutline((i%252)?'3px solid red':'none'), i*100);\n\n setTimeout(focusIt(window), 800);\n setTimeout(focusIt(_in), 810);\n},\n\nscope : function scope(sc)\n{\n if (!sc) sc = {};\n _scope = sc;\n println(\"Scope is now \" + sc + \". If a variable is not found in this scope, window will also be searched. New variables will still go on window.\", \"message\");\n},\n\nmathHelp : function mathHelp()\n{\n printWithRunin(\"Math constants\", \"E, LN2, LN10, LOG2E, LOG10E, PI, SQRT1_2, SQRT2\", \"propList\");\n printWithRunin(\"Math methods\", \"abs, acos, asin, atan, atan2, ceil, cos, exp, floor, log, max, min, pow, random, round, sin, sqrt, tan\", \"propList\");\n},\n\nans : undefined\n};\n\n\nfunction hist(up)\n{\n // histList[0] = first command entered, [1] = second, etc.\n // type something, press up --> thing typed is now in \"limbo\"\n // (last item in histList) and should be reachable by pressing \n // down again.\n\n var L = histList.length;\n\n if (L == 1)\n return;\n\n if (up)\n {\n if (histPos == L-1)\n {\n // Save this entry in case the user hits the down key.\n histList[histPos] = _in.value;\n }\n\n if (histPos > 0)\n {\n histPos--;\n // Use a timeout to prevent up from moving cursor within new text\n // Set to nothing first for the same reason\n setTimeout(\n function() {\n _in.value = ''; \n _in.value = histList[histPos]; \n if (_in.setSelectionRange) \n _in.setSelectionRange(0, 0);\n },\n 0\n );\n }\n } \n else // down\n {\n if (histPos < L-1)\n {\n histPos++;\n _in.value = histList[histPos];\n }\n else if (histPos == L-1)\n {\n // Already on the current entry: clear but save\n if (_in.value)\n {\n histList[histPos] = _in.value;\n ++histPos;\n _in.value = \"\";\n }\n }\n }\n}\n\nfunction tabcomplete()\n{\n /*\n * Working backwards from s[from], find the spot\n * where this expression starts. It will scan\n * until it hits a mismatched ( or a space,\n * but it skips over quoted strings.\n * If stopAtDot is true, stop at a '.'\n */\n function findbeginning(s, from, stopAtDot)\n {\n /*\n * Complicated function.\n *\n * Return true if s[i] == q BUT ONLY IF\n * s[i-1] is not a backslash.\n */\n function equalButNotEscaped(s,i,q)\n {\n if(s.charAt(i) != q) // not equal go no further\n return false;\n\n if(i==0) // beginning of string\n return true;\n\n if(s.charAt(i-1) == '\\\\') // escaped?\n return false;\n\n return true;\n }\n\n var nparens = 0;\n var i;\n for(i=from; i>=0; i--)\n {\n if(s.charAt(i) == ' ')\n break;\n\n if(stopAtDot && s.charAt(i) == '.')\n break;\n \n if(s.charAt(i) == ')')\n nparens++;\n else if(s.charAt(i) == '(')\n nparens--;\n\n if(nparens < 0)\n break;\n\n // skip quoted strings\n if(s.charAt(i) == '\\'' || s.charAt(i) == '\\\"')\n {\n //dump(\"skipping quoted chars: \");\n var quot = s.charAt(i);\n i--;\n while(i >= 0 && !equalButNotEscaped(s,i,quot)) {\n //dump(s.charAt(i));\n i--;\n }\n //dump(\"\\n\");\n }\n }\n return i;\n }\n\n function getcaretpos(inp)\n {\n if(inp.selectionEnd)\n return inp.selectionEnd;\n\n if(inp.createTextRange)\n {\n //dump('using createTextRange\\n');\n var docrange = _win.Shell.document.selection.createRange();\n var inprange = inp.createTextRange();\n inprange.setEndPoint('EndToStart', docrange);\n return inprange.text.length;\n }\n\n return inp.value.length; // sucks, punt\n }\n\n function setselectionto(inp,pos)\n {\n if(inp.selectionStart) {\n inp.selectionStart = inp.selectionEnd = pos;\n }\n else if(inp.createTextRange) {\n var docrange = _win.Shell.document.selection.createRange();\n var inprange = inp.createTextRange();\n inprange.move('character',pos);\n inprange.select();\n }\n else { // err...\n /*\n inp.select();\n if(_win.Shell.document.getSelection())\n _win.Shell.document.getSelection() = \"\";\n */\n }\n }\n // get position of cursor within the input box\n var caret = getcaretpos(_in);\n\n if(caret) {\n //dump(\"----\\n\");\n var dotpos, spacepos, complete, obj;\n //dump(\"caret pos: \" + caret + \"\\n\");\n // see if there's a dot before here\n dotpos = findbeginning(_in.value, caret-1, true);\n //dump(\"dot pos: \" + dotpos + \"\\n\");\n if(dotpos == -1 || _in.value.charAt(dotpos) != '.') {\n dotpos = caret;\n//dump(\"changed dot pos: \" + dotpos + \"\\n\");\n }\n\n // look backwards for a non-variable-name character\n spacepos = findbeginning(_in.value, dotpos-1, false);\n //dump(\"space pos: \" + spacepos + \"\\n\");\n // get the object we're trying to complete on\n if(spacepos == dotpos || spacepos+1 == dotpos || dotpos == caret)\n {\n // try completing function args\n if(_in.value.charAt(dotpos) == '(' ||\n (_in.value.charAt(spacepos) == '(' && (spacepos+1) == dotpos))\n {\n var fn,fname;\n var from = (_in.value.charAt(dotpos) == '(') ? dotpos : spacepos;\n spacepos = findbeginning(_in.value, from-1, false);\n\n fname = _in.value.substr(spacepos+1,from-(spacepos+1));\n //dump(\"fname: \" + fname + \"\\n\");\n try {\n with(_win.Shell._scope)\n with(_win)\n with(Shell.shellCommands)\n fn = eval(fname);\n }\n catch(er) {\n //dump('fn is not a valid object\\n');\n return;\n }\n if(fn == undefined) {\n //dump('fn is undefined');\n return;\n }\n if(fn instanceof Function)\n {\n // Print function definition, including argument names, but not function body\n if(!fn.toString().match(/function .+?\\(\\) +\\{\\n +\\[native code\\]\\n\\}/))\n println(fn.toString().match(/function .+?\\(.*?\\)/), \"tabcomplete\");\n }\n\n return;\n }\n else\n obj = _win;\n }\n else\n {\n var objname = _in.value.substr(spacepos+1,dotpos-(spacepos+1));\n //dump(\"objname: |\" + objname + \"|\\n\");\n try {\n with(_win.Shell._scope)\n with(_win)\n obj = eval(objname);\n }\n catch(er) {\n printError(er); \n return;\n }\n if(obj == undefined) {\n // sometimes this is tabcomplete's fault, so don't print it :(\n // e.g. completing from \"print(document.getElements\"\n // println(\"Can't complete from null or undefined expression \" + objname, \"error\");\n return;\n }\n }\n //dump(\"obj: \" + obj + \"\\n\");\n // get the thing we're trying to complete\n if(dotpos == caret)\n {\n if(spacepos+1 == dotpos || spacepos == dotpos)\n {\n // nothing to complete\n //dump(\"nothing to complete\\n\");\n return;\n }\n\n complete = _in.value.substr(spacepos+1,dotpos-(spacepos+1));\n }\n else {\n complete = _in.value.substr(dotpos+1,caret-(dotpos+1));\n }\n //dump(\"complete: \" + complete + \"\\n\");\n // ok, now look at all the props/methods of this obj\n // and find ones starting with 'complete'\n var matches = [];\n var bestmatch = null;\n for(var a in obj)\n {\n //a = a.toString();\n //XXX: making it lowercase could help some cases,\n // but screws up my general logic.\n if(a.substr(0,complete.length) == complete) {\n matches.push(a);\n ////dump(\"match: \" + a + \"\\n\");\n // if no best match, this is the best match\n if(bestmatch == null)\n {\n bestmatch = a;\n }\n else {\n // the best match is the longest common string\n function min(a,b){ return ((a<b)?a:b); }\n var i;\n for(i=0; i< min(bestmatch.length, a.length); i++)\n {\n if(bestmatch.charAt(i) != a.charAt(i))\n break;\n }\n bestmatch = bestmatch.substr(0,i);\n ////dump(\"bestmatch len: \" + i + \"\\n\");\n }\n ////dump(\"bestmatch: \" + bestmatch + \"\\n\");\n }\n }\n bestmatch = (bestmatch || \"\");\n ////dump(\"matches: \" + matches + \"\\n\");\n var objAndComplete = (objname || obj) + \".\" + bestmatch;\n //dump(\"matches.length: \" + matches.length + \", tooManyMatches: \" + tooManyMatches + \", objAndComplete: \" + objAndComplete + \"\\n\");\n if(matches.length > 1 && (tooManyMatches == objAndComplete || matches.length <= 10)) {\n\n printWithRunin(\"Matches: \", matches.join(', '), \"tabcomplete\");\n tooManyMatches = null;\n }\n else if(matches.length > 10)\n {\n println(matches.length + \" matches. Press tab again to see them all\", \"tabcomplete\");\n tooManyMatches = objAndComplete;\n }\n else {\n tooManyMatches = null;\n }\n if(bestmatch != \"\")\n {\n var sstart;\n if(dotpos == caret) {\n sstart = spacepos+1;\n }\n else {\n sstart = dotpos+1;\n }\n _in.value = _in.value.substr(0, sstart)\n + bestmatch\n + _in.value.substr(caret);\n setselectionto(_in,caret + (bestmatch.length - complete.length));\n }\n }\n}\n\nfunction printQuestion(q)\n{\n println(q, \"input\");\n}\n\nfunction printAnswer(a)\n{\n if (a !== undefined) {\n println(a, \"normalOutput\");\n shellCommands.ans = a;\n }\n}\n\nfunction printError(er)\n{ \n if (er.name)\n println(er.name + \": \" + er.message, \"error\"); // Because IE doesn't have error.toString.\n else\n println(er, \"error\"); // Because security errors in Moz /only/ have toString.\n}\n\nfunction go(s)\n{\n _in.value = question = s ? s : _in.value;\n\n if (question == \"\")\n return;\n\n histList[histList.length-1] = question;\n histList[histList.length] = \"\";\n histPos = histList.length - 1;\n \n // Unfortunately, this has to happen *before* the JavaScript is run, so that \n // print() output will go in the right place.\n _in.value='';\n recalculateInputHeight();\n printQuestion(question);\n\n if (_win.closed) {\n printError(\"Target window has been closed.\");\n return;\n }\n \n try { (\"Shell\" in _win) }\n catch(er) {\n printError(\"The JavaScript Shell cannot access variables in the target window. The most likely reason is that the target window now has a different page loaded and that page has a different hostname than the original page.\");\n return;\n }\n\n if (!(\"Shell\" in _win))\n initTarget(); // silent\n\n // Evaluate Shell.question using _win's eval (this is why eval isn't in the |with|, IIRC).\n _win.location.href = \"javascript:try{ Shell.printAnswer(eval('with(Shell._scope) with(Shell.shellCommands) {' + Shell.question + String.fromCharCode(10) + '}')); } catch(er) { Shell.printError(er); }; setTimeout(Shell.refocus, 0); void 0\";\n}\n\n</script>\n\n<!-- for http://ted.mielczarek.org/code/mozilla/extensiondev/ -->\n<script type=\"text/javascript\" src=\"chrome://extensiondev/content/rdfhistory.js\"></script>\n<script type=\"text/javascript\" src=\"chrome://extensiondev/content/chromeShellExtras.js\"></script>\n\n<style type=\"text/css\">\nbody { background: white; color: black; }\n\n#output { white-space: pre; white-space: -moz-pre-wrap; } /* Preserve line breaks, but wrap too if browser supports it */\nh3 { margin-top: 0; margin-bottom: 0em; }\nh3 + div { margin: 0; }\n\nform { margin: 0; padding: 0; }\n#input { width: 100%25; border: none; padding: 0; }\n\n.input { color: blue; background: white; font: inherit; font-weight: bold; margin-top: .5em; /* background: #E6E6FF; */ }\n.normalOutput { color: black; background: white; }\n.print { color: brown; background: white; }\n.error { color: red; background: white; }\n.propList { color: green; background: white; }\n.message { color: green; background: white; }\n.tabcomplete { color: purple; background: white; }\n</style>\n</head>\n\n<body onload=\"init()\">\n\n <div id=\"output\"><h3>JavaScript Shell 1.3</h3><div>Features: autocompletion of property names with Tab, multiline input with Shift+Enter, input history with (Ctrl+) Up/Down, <a accesskey=M href=\"javascript:go('scope(Math); mathHelp();');\">Math</a>, <a accesskey=H href=\"http://www.squarefree.com/shell/?ignoreReferrerFrom=shell1.3\">help</a></div><div>Values and functions: ans, print(string), <a accesskey=P href=\"javascript:go('props(ans)')\">props(object)</a>, <a accesskey=B href=\"javascript:go('blink(ans)')\">blink(node)</a>, load(scriptURL), scope(object)</div></div>\n\n<div><textarea id=\"input\" class=\"input\" wrap=\"off\" onkeydown=\"inputKeydown(event)\" rows=\"1\"></textarea></div>\n\n</body>\n\n</html>");document.close();}void 0
- Description
- "Opens a JavaScript Shell and allows it to access the current page. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#shell
[edit] jsenv
javascript:with(window.open("","_blank","width="+screen.width*.6+",left="+screen.width*.35+",height="+screen.height*.9+",resizable,scrollbars=yes")){document.write("<head><title>JavaScript Development Environment 2.0</title><!-- about:blank confuses opera.. --></head>\n\n\n\n\n<frameset rows=\"25,*,*\">\n\n <frame name=\"toolbarFrame\" src=\"about:blank\" noresize=\"noresize\">\n\n <frame name=\"inputFrame\" src=\"about:blank\">\n\n <frame name=\"outputFrame\" src=\"about:blank\">\n\n</frameset>\n\n");document.close(); frames[0].document.write("<head><!-- no doctype - it makes IE ignore the height: 100%25. --><title>toolbarFrame</title>\n\n<style type=\"text/css\">\nhtml,body { width: 100%25; height: 100%25; border: none; margin: 0px; padding: 0px; }\nbutton { height: 100%25; }\n</style>\n\n<script type=\"text/javascript\">\n\nvar outputFrame = top.outputFrame;\nvar inputFrame = top.inputFrame;\nvar framesetElement = top.document.documentElement.getElementsByTagName(\"frameset\")[0];\n\nvar savedRows;\n\n\n// Need to use C-style comments in handleError() and print() \n// because IE retains them when decompiling a function.\n\n\n\nfunction print(s, c) {\n var outputFrame = top.outputFrame; /* duplicated here in case this function is elsewhere */\n var doc = outputFrame.document;\n\n var newdiv = doc.createElement(\"div\");\n newdiv.appendChild(doc.createTextNode(s));\n if (c)\n newdiv.style.color = c;\n doc.body.appendChild(newdiv);\n}\n\nfunction handleError(er, file, lineNumber) \n{\n print(\"Error on line \" + lineNumber + \": \" + er, \"red\"); \n \n /* Find the character offset for the line */\n /* (code adapted from blogidate xml well-formedness bookmarklet) */\n var ta = inputFrame.document.getElementById(\"input\");\n var lines = ta.value.split(\"\\n\");\n var cc = 0; \n var i;\n for(i=0; i < (lineNumber - 1); ++i) \n cc += lines[i].length + 1;\n\n /* Hacky(?) workaround for IE's habit of including \\r's in strings */\n if (ta.value.split(\"\\r\").length > 1)\n cc -= lineNumber - 1;\n\n /* Select the line */\n if(document.selection) { \n /* IE (Leonard Lin gave me this code) */\n var sel = ta.createTextRange(); \n sel.moveStart(\"character\", cc); \n sel.collapse(); \n sel.moveEnd(\"character\", lines[i].length); \n sel.select();\n } else { \n /* Mozilla */\n ta.selectionStart = cc; \n ta.selectionEnd = cc + lines[i].length; \n }\n \n /* return true; */ /* nah, let the error go through to IE's js consolish thing! */\n}\n\n\n\n\n\nfunction showHideOutput()\n{\n if (outputFrame.document.body.clientHeight > 100) {\n // hide\n savedRows = framesetElement.rows; \n framesetElement.rows = \"25,*,0\";\n }\n else {\n // show. use the previous size, if possible\n if (savedRows) {\n framesetElement.rows = savedRows;\n savedRows = null;\n }\n else {\n framesetElement.rows = \"25,*,*\";\n }\n }\n}\n\nfunction refocus()\n{\n inputFrame.document.getElementById(\"input\").focus();\n}\n\n\nfunction clearOutput()\n{\n var b = outputFrame.document.body;\n while(b.firstChild)\n b.removeChild(b.firstChild);\n}\n\nfunction stripLineBreaks(s)\n{\n return s.replace(/\\n/g, \"\").replace(/\\r/g, \"\"); // stripping \\r is for IE\n}\n\nfunction execute()\n{\n var js = inputFrame.document.getElementById(\"input\").value;\n\n var useOpener = top.opener && !top.opener.closed;\n var oldStyle = !! document.all; // lame but meh.\n \n print(\"Running\" + (useOpener ? \" in bookmarklet mode\" : \"\") + (oldStyle ? \" in make-IE-happy mode\" : \"\") + \"...\", \"orange\");\n\n if (useOpener)\n executeWithJSURL(js, top.opener); // only way to execute against another frame\n else if (oldStyle)\n executeWithDW(js, execFrame); // only way to get line numbers in IE\n else\n executeWithJSURL(js, execFrame); // faster in Mozilla \n}\n\n// Advantages: can get line numbers in IE.\nfunction executeWithDW(js, win)\n{\n win.document.open();\n win.inputFrame = inputFrame;\n win.outputFrame = outputFrame;\n win.document.write(\n stripLineBreaks(\n '<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">' +\n '<html><head><title>execFrame<\\/title><script type=\"text/javascript\">'\n + print // yay for decompilation!\n + handleError \n + \"window.onerror = handleError;\"\n + \"<\\/script><\\/head>\"\n ) \n + '<body><script type=\"text/javascript\">'\n + js // should escape it a little to remove the string <\\/script> at least...\n + \"<\\/script><\\/body><\\/html>\"\n );\n win.document.close();\n}\n\n// Advantages: can be used to inject a script into another window, faster in Mozilla.\nfunction executeWithJSURL(js, win)\n{\n // isolate scope\n js = \"(function(){ \" + js + \" \\n })()\";\n\n win.print = print;\n win.onerror = handleError;\n\n // double encodeURIComponent because javascript: URLs themselves are encoded!\n win.location.href = 'javascript:eval(decodeURIComponent(\"' + encodeURIComponent(encodeURIComponent(js)) + '\")); void 0;';\n \n refocus();\n}\n\n// Other ideas I haven't tried lately: create a <script> element, eval.\n\n\nfunction makeUserScript(userScriptLink)\n{\n userScriptLink.href = \n \"data:text/javascript;charset=utf-8,\" + \n encodeURIComponent(inputFrame.document.getElementById(\"input\").value + \"//.user.js\");\n}\n\n</script></head>\n\n<body>\n\n<button accesskey=\"E\" onclick=\"execute(); refocus();\"><u>E</u>xecute</button>\n<!-- <button accesskey=\"R\" onclick=\"reloadAndExecute(); refocus();\"><u>R</u>eload and execute</button> -->\n<button accesskey=\"C\" onclick=\"clearOutput(); refocus();\"><u>C</u>lear output</button>\n<button accesskey=\"S\" onclick=\"showHideOutput(); refocus();\"><u>S</u>how/hide output</button>\n<!-- <button accesskey=\"H\" onclick=\"help(); refocus();\"><u>H</u>elp</button> -->\n\n<a href=\"data:text/html,...\" onfocus=\"makeUserScript(this);\" onmouseover=\"makeUserScript(this);\" target=\"_blank\">Install as user script</a>\n\n<div style=\"visibility: hidden;\">\n<iframe name=\"execFrame\" src=\"about:blank\" height=\"5\" width=\"5\"></iframe>\n</div>\n\n</body>"); frames[0].document.close(); frames[1].document.write("<head><!-- no doctype - it makes IE ignore the height: 100%25. --><title>inputFrame</title>\n\n\n\n<style type=\"text/css\">\n\nhtml,body,form,textarea { width: 100%25; height: 100%25; border: none; margin: 0px; padding: 0px; }\nhtml,body { overflow: hidden; }\n\n</style></head>\n\n<body onload=\"document.getElementById('input').select();\">\n<textarea style=\"background-color: rgb(221, 238, 255);\" id=\"input\">// ==UserScript==\n// @namespace http://www.squarefree.com/jsenv/autogenerated\n// @name Unnamed script\n// @description Undescribed script\n// ==/UserScript==\n\nprint(\"Squares of numbers 0 through 4:\");\nfor (var i = 0; i < 5; ++i)\n print(i * i);\n \nthis.line.causes.an.error\n</textarea>\n</body>"); frames[1].document.close(); }void 0
- Description
- "Opens a <a href="../jsenv/">JavaScript Development Environment</a> and allows it to access the current page. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#jsenv
[edit] test styles
javascript:(function(){function init(){var newline=unescape("%"+"0A");dead=false;oldCSS=null;x=opener;ta=document.f.ta;ta.select();ta.value="/* Type CSS rules here and they will be applied"+newline+"to pages from '"+location.host+"'"+newline+"immediately as long as you keep this window open. */"+newline+newline;update();}function update(){try{if(!x||x.closed){ta.style.backgroundColor="#ddd";return;}x.bookmarkletStyleSheet;}catch(er){ta.style.backgroundColor="#fdc";setTimeout(update,150);dead=true;return;}if(dead){dead=false;ta.style.backgroundColor="";oldCSS=null;}if(!x.testStyles){var newSS;newSS=x.document.createElement("link");newSS.rel="stylesheet";newSS.type="text/css";x.document.getElementsByTagName("head")[0].appendChild(newSS);x.testStyles=newSS;oldCSS=null;}if(oldCSS!=ta.value){oldCSS=ta.value;if(window.opera)x.testStyles.href="javascript:unescape('"+escape(ta.value)+"')";else if(navigator.userAgent.indexOf("MSIE")!=-1)x.testStyles.href="javascript:unescape('"+escape(escape(ta.value))+"')";else x.testStyles.href="data:text/css,"+escape(ta.value);}setTimeout(update,150);}y=window.open('','','resizable,width=500,height=300');y.document.write('<title>New CSS Style Sheet</title><style>.ec { width: 100%; height: 100%; border: none; margin: 0px; padding: 0px; }</style><body class="ec"><form name="f" style="margin: 0px;" class="ec"><textarea name="ta" wrap="soft" style="margin: 0px; border: 0px; width:100%; height:100%;" class="ec"></textarea><script>'+update+init+'init();<'+'/script>');y.document.close();})()
- Description
- "Type in CSS rules to experiment or to create a temporary user style sheet. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#test_styles
[edit] edit styles
javascript:(function(){function init(){var newline=unescape("%"+"0A"),importCount=0,L=[];dead=false;oldCSS=null;x=opener;ta=document.f.ta;ta.select();if(x.editStyles){ta.value=x.editStyles.innerHTML;update();return;}ta.value="/* Type CSS rules here and they will be applied"+newline+"to pages from '"+location.host+"'"+newline+"immediately as long as you keep this window open. */"+newline+newline;function add(s){if(!s.disabled){var y={sheet:s,readable:true,label:"Imported",inline:false,shorturl:"",fulltext:""};try{for(var k=0,m;m=s.cssRules[k];++k)if(m.type==3)add(m.styleSheet);}catch(er){y.readable=false;}L.push(y);if(s.ownerNode){y.label=s.ownerNode.tagName.toUpperCase()+"-tag";if(!s.ownerNode.getAttribute("src")&&!s.ownerNode.href)y.inline=true;}if(y.inline){y.label="Inline "+y.label;y.fulltext=fix(s.ownerNode.innerHTML);}else if(s.href.substr(0,13)=="data:text/css"){y.shorturl=" contained in a data: URL";y.fulltext=fix(unescape(s.href.slice(14)));}else{++importCount;y.importtext="@import \""+s.href+"\";";y.shorturl=" "+s.href.split('/').reverse()[0];if(!y.readable){y.fulltext="/* Out-of-domain; imported above. */";}else if(s.href.substr(0,5)!="http:"){y.fulltext="/* Non-http; imported above. */";}else{var loadingText="/* Loading ("+(L.length-1)+") */";y.fulltext=loadingText;var p=new XMLHttpRequest();p.onload=function(e){ta.value=ta.value.replace(y.importtext+newline,"");y.fulltext=p.responseText;ta.value=ta.value.replace(loadingText,fix(y.fulltext));ta.value=ta.value.replace(firstNote+newline,"");};p.open("GET",s.href);p.send(null);}}}}function fix(s){while((s[0]==newline)&&s.length>1)s=s.slice(1);while((s[s.length-1]==newline)&&s.length>1)s=s.substr(0,s.length-1);s=s.replace(/@import.*;/ig,function(){return "/* "+RegExp.lastMatch+" */";});return s;}for(var i=0,ss;ss=x.document.styleSheets[i];++i)add(ss);var imports="",main="";var firstNote="/**** Style sheets whose contents could be loaded were ****/"+newline+"/**** imported instead. Rule order may be incorrect ****/"+newline+"/**** as a result. ****/"+newline;if(importCount){ta.value+=firstNote;}for(var i=0;ss=L[i];++i){if(ss.importtext){imports+=ss.importtext+newline;}main+="/**** "+ss.label+" style sheet"+ss.shorturl+" ****/"+newline;main+=newline;main+=ss.fulltext;main+=newline;main+=newline;main+=newline;}ta.value+=imports+newline+main;update();}function update(){try{if(!x||x.closed){ta.style.backgroundColor="#ddd";return;}x.editStyles;}catch(er){ta.style.backgroundColor="#fdc";setTimeout(update,150);dead=true;return;}if(dead){dead=false;ta.style.backgroundColor="";oldCSS=null;}if(!x.editStyles){var newSS;newSS=x.document.createElement("style");newSS.type="text/css";x.document.getElementsByTagName("head")[0].appendChild(newSS);x.editStyles=newSS;oldCSS=null;for(var i=0,ss;ss=x.document.styleSheets[i];++i)ss.disabled=true;}if(oldCSS!=ta.value){oldCSS=ta.value;x.editStyles.innerHTML=ta.value;}setTimeout(update,150);}y=open('','','resizable,scrollbars=yes,width=550,height=520');y.document.write('<title>Edit Styles</title><style>.ec { width: 100%; height: 100%; border: none; margin: 0px; padding: 0px; }</style><body class="ec"><form name="f" style="margin: 0px;" class="ec"><textarea name="ta" wrap="soft" style="margin: 0px; border: 0px; width:100%; height:100%;" class="ec"></textarea><script>'+update+init+'init();<'+'/script>');y.document.close();})()
- Description
- "Experiment with changes to the page's style sheet. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#edit_styles
[edit] ancestors
javascript:(function(){function A(n,g){var p=n.parentNode,t=n.tagName;if(!p)return "";if(!t)return A(p,g);var T=t.toUpperCase(),b=(T!="TABLE"&&T!="TBODY"&&T!="THEAD"&&T!="TR"),c=n.className,i=n.id;return A(p,' > ')+(b?T:T.toLowerCase())+(c?"."+c:"")+(i?"#"+i:"")+(b?g:' ');}document.onmouseover=function(e){e=e?e:event;var s,g=e.target;g=g?g:e.srcElement;try{s=A(g,'');}catch(err){s=err.message;}window.status=s;return true;};window.status=A(document.documentElement,'');})()
- Description
- "Lists the ancestors of any element you hover over in the status bar. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#ancestors
[edit] computed styles
javascript:(function(){function A(n,g){var p=n.parentNode,t=n.tagName;if(!p)return "";if(!t)return A(p,g);var T=t.toUpperCase(),b=(T!="TABLE"&&T!="TBODY"&&T!="THEAD"&&T!="TR"),c=n.className,i=n.id;return A(p,' > ')+(b?T:T.toLowerCase())+(c?"."+c:"")+(i?"#"+i:"")+(b?g:' ');}document.onmouseover=function(e){e=e?e:event;var s,g=e.target;g=g?g:e.srcElement;try{s=A(g,'')+" (click for computed styles)";}catch(err){s=err.message;}window.status=s;return true;};window.status=A(document.documentElement,'');var newSS,styles='* { cursor: crosshair; }';newSS=document.createElement('link');newSS.rel='stylesheet';newSS.type='text/css';newSS.href='data:text/css,'+escape(styles);document.getElementsByTagName("head")[0].appendChild(newSS);document.onclick=function(e){e=e?e:event;var s,g=e.target;g=g?g:e.srcElement;var x=window.open('','computedStyles');x.document.open();x.document.close();var d=x.document;x.onunload=function(){document.onclick=null;document.onmouseover=null;window.status=null;newSS.href='data:text/css,';};function sp(n,t,col){var r=d.createElement(n);r.appendChild(d.createTextNode(t));if(col)r.style.color=col;return r;}var typeIndex={'top':1,'bottom':1,'height':1,'width':1,'left':1,'right':1,'position':0,'display':0,'-moz-appearance':0,'-moz-box-sizing':0};var colors=["red","green","black"];function undirect(v){return v.replace(/\-(left|top|bottom|right)/,"-*");}function diff(n,p){pcs=p.ownerDocument.defaultView.getComputedStyle(p,"");ncs=n.ownerDocument.defaultView.getComputedStyle(n,"");var A=[];var B={};var C={};for(var i=0;i<ncs.length;++i){var e=ncs.item(i),v=ncs.getPropertyValue(e),pv=pcs.getPropertyValue(e);if(v!=pv){var u=undirect(e);if(u.indexOf("-*")!=-1){if(!B[u])B[u]=[0,v];if(B[u][1]==v)++(B[u][0]);}A.push([typeIndex[e]!=null?typeIndex[e]:2,e,v]);}}A=A.sort();for(var u in B)if(B[u][0]==4)C[u]=true;for(var i in A){var t=A[i],e=t[1],v=t[2],u=undirect(e);if(C[u]){if(t[1].indexOf("-left")!=-1)d.body.appendChild(sp("div",u+": "+v,colors[t[0]]));}else d.body.appendChild(sp("div",e+": "+v,colors[t[0]]));}}function info(n){if(!n)return;if(n.tagName){d.body.appendChild(sp("h4",A(n,'')));diff(n,n.parentNode.nodeType!='9'?n.parentNode:d.documentElement);}info(n.parentNode);}d.body.appendChild(sp("p","This shows how the computed style of each node differs from the computed style of its parent. The root element, which has no parent, is instead compared against the root of a blank HTML document."));info(g);x.focus();e.preventDefault();}})()
- Description
- "Lists the computed styles of an element and of its ancestors. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#computed_styles
[edit] zap style sheets
javascript:(function(){var i,x;for(i=0;x=document.styleSheets[i];++i)x.disabled=true;})();
- Description
- "Disables all style sheets. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#zap_style_sheets
[edit] zap presentational html
javascript:(function(){var H=["bgcolor","bgColor","background","color","align","text","alink","vlink"],Y={FONT:1,CENTER:1},d=[],p; function R(N){var a,x,i,t; if(t=N.tagName){ t=t.toUpperCase(); for (i=0;a=H[i];++i)if(N.getAttribute(a))N.removeAttribute(a); for(i=0;x=N.childNodes[i];++i)R(x); if (Y[t])d.push(N); } } R(document.documentElement); for (i=0;N=d[i];++i) { p=N.parentNode; while(N.firstChild)p.insertBefore(N.firstChild,N); p.removeChild(N); } })()
- Description
- "Removes most presentational attributes and tags while leaving style sheets intact. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#zap_presentational_html
[edit] view style sheets
javascript:s=document.getElementsByTagName('STYLE'); ex=document.getElementsByTagName('LINK'); d=window.open().document; /*set base href*/d.open();d.close(); b=d.body; function trim(s){return s.replace(/^\s*\n/, '').replace(/\s*$/, ''); }; function iff(a,b,c){return b?a+b+c:'';}function add(h){b.appendChild(h);} function makeTag(t){return document.createElement(t);} function makeText(tag,text){t=makeTag(tag);t.appendChild(document.createTextNode(text)); return t;} add(makeText('style', 'iframe{width:100%;height:18em;border:1px solid;')); add(makeText('h3', d.title='Style sheets in ' + location.href)); for(i=0; i<s.length; ++i) { add(makeText('h4','Inline style sheet' + iff(' title="',s[i].title,'"'))); add(makeText('pre', trim(s[i].innerHTML))); } for (i=0; i<ex.length; ++i) { rs=ex[i].rel.split(' '); for(j=0;j<rs.length;++j) if (rs[j].toLowerCase()=='stylesheet') { add(makeText('h4','link rel="' + ex[i].rel + '" href="' + ex[i].href + '"' + iff(' title="',ex[i].title,'"'))); iframe=makeTag('iframe'); iframe.src=ex[i].href; add(iframe); break; } } void 0
- Description
- "Displays linked and embedded style sheets. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#view_style_sheets
[edit] view scripts
javascript:s=document.getElementsByTagName('SCRIPT'); d=window.open().document; /*140681*/d.open();d.close(); b=d.body; function trim(s){return s.replace(/^\s*\n/, '').replace(/\s*$/, ''); }; function add(h){b.appendChild(h);} function makeTag(t){return document.createElement(t);} function makeText(tag,text){t=makeTag(tag);t.appendChild(document.createTextNode(text)); return t;} add(makeText('style', 'iframe{width:100%;height:18em;border:1px solid;')); add(makeText('h3', d.title='Scripts in ' + location.href)); for(i=0; i<s.length; ++i) { if (s[i].src) { add(makeText('h4','script src="' + s[i].src + '"')); iframe=makeTag('iframe'); iframe.src=s[i].src; add(iframe); } else { add(makeText('h4','Inline script')); add(makeText('pre', trim(s[i].innerHTML))); } } void 0
- Description
- "Displays linked and embedded scripts. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#view_scripts
[edit] view variables
javascript:(function(){var x,d,i,v,st; x=open(); d=x.document; d.open(); function hE(s){s=s.replace(/&/g,"&");s=s.replace(/>/g,">");s=s.replace(/</g,"<");return s;} d.write("<style>td{vertical-align:top; white-space:pre; } table,td,th { border: 1px solid #ccc; } div.er { color:red }</style><table border=1><thead><tr><th>Variable</th><th>Type</th><th>Value as string</th></thead>"); for (i in window) { if (!(i in x) ) { v=window[i]; d.write("<tr><td>" + hE(i) + "</td><td>" + hE(typeof(window[i])) + "</td><td>"); if (v===null) d.write("null"); else if (v===undefined) d.write("undefined"); else try{st=v.toString(); if (st.length)d.write(hE(v.toString())); else d.write("%C2%A0")}catch(er){d.write("<div class=er>"+hE(er.toString())+"</div>")}; d.write(""); } } d.write(""); d.close(); })();
- Description
- "Displays all JavaScript variables and functions. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#view_variables
[edit] list classes
javascript:(function(){var a={},b=[],i,e,c,k,d,s="<table border=1><thead><tr><th>#</th><th>Tag</th><th>className</th></thead>";for(i=0;e=document.getElementsByTagName("*")[i];++i)if(c=e.className){k=e.tagName+"."+c;a[k]=a[k]?a[k]+1:1;}for(k in a)b.push([k,a[k]]);b.sort();for(i in b) s+="<tr><td>"+b[i][1]+"</td><td>"+b[i][0].split(".").join("</td><td>")+"</td>";s+="</table>";d=open().document;d.write(s);d.close();})()
- Description
- "Lists classes used in the document. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#list_classes
[edit] generated source
javascript:(function(){ function htmlEscape(s){s=s.replace(/&/g,'&');s=s.replace(/>/g,'>');s=s.replace(/</g,'<');return s;} x=window.open(); x.document.write('<pre>' + htmlEscape('<html>\n' + document.documentElement.innerHTML + '\n</html>')); x.document.close(); })();
- Description
- "Displays the DOM tree of the page as HTML. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#generated_source
[edit] partial source
javascript:function getSelSource() { x = document.createElement("div"); x.appendChild(window.getSelection().getRangeAt(0).cloneContents()); return x.innerHTML; } function makeHR() { return document.createElement("hr"); } function makeParagraph(text) { p = document.createElement("p"); p.appendChild(document.createTextNode(text)); return p; } function makePre(text) { p = document.createElement("pre"); p.appendChild(document.createTextNode(text)); return p; } nd = window.open().document; ndb = nd.body; if (!window.getSelection || !window.getSelection().rangeCount || window.getSelection().getRangeAt(0).collapsed) { nd.title="Generated Source of: " + location.href; ndb.appendChild(makeParagraph("No selection, showing generated source of entire document.")); ndb.appendChild(makeHR()); ndb.appendChild(makePre("<html>\n" + document.documentElement.innerHTML + "\n</html>")); } else { nd.title="Partial Source of: " + location.href; ndb.appendChild(makePre(getSelSource())); }; void 0
- Description
- "Displays the DOM tree of the selection as HTML. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#partial_source
[edit] show blocks
javascript:(function(){var newSS; newSS=document.createElement("link"); newSS.rel="stylesheet"; newSS.type="text/css"; newSS.href = "http://www.cs.hmc.edu/~jruderma/block-structure.css"; document.getElementsByTagName("head")[0].appendChild(newSS); })();
- Description
- "Draws borders to show tables (colors indicate nesting), paragraphs, and divs. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#show_blocks
[edit] topographic view
javascript:(function(){var s="body",c="",I=" ! important;",i,b,f,x,h; for(i=0;i<17;++i) { x = i.toString(16); b = i>15?"FCC":x+x+x; f = i>9?"000":"FFF"; c += s + " {background: #" + b + I + "border-color: #" + b + I + "color: #" + f + I + "}\n"; s += " *"; } if(document.createStyleSheet) { document.createStyleSheet("javascript:'"+c+"'"); } else { h=document.createElement('link'); h.rel='stylesheet'; h.href='data:text/css,'+escape(c); document.getElementsByTagName("head")[0].appendChild(h);}})()
- Description
- "Shows the nesting level of every element using shading. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#topographic_view
[edit] topo with borders
javascript:(function(){var s="body",c="",I=" ! important;",i,b,f,x,h; for(i=0;i<17;++i) { x = i.toString(16); b = i>15?"FCC":x+x+x; f = i>9?"000":"FFF"; c += s + " {background: #" + b + I + "border: 1px outset #" + b + I + "color: #" + f + I + "}\n"; s += " *"; } if(document.createStyleSheet) { document.createStyleSheet("javascript:'"+c+"'"); } else { h=document.createElement('link'); h.rel='stylesheet'; h.href='data:text/css,'+escape(c); document.getElementsByTagName("head")[0].appendChild(h);}})()
- Description
- "Shows the nesting level of every element using shading and 3D borders. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#topo_with_borders
[edit] make link
javascript:function htmlEscape(s){s=s.replace(/&/g,'&');s=s.replace(/>/g,'>');s=s.replace(/</g,'<');return s;} function linkEscape(s){s=s.replace(/&/g,'&');s=s.replace(/"/,'"');return s} h = '<a href="' + linkEscape(location.href) + '">' + htmlEscape(document.title) + '</a>'; with(window.open().document){write(h+'<form name=f><textarea name=a rows=5 cols=80 wrap=hard>'+htmlEscape(h)+'</textarea></form>'); close(); f.a.select(); } void 0
- Description
- "Creates the HTML code to link to the current page. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#make_link
[edit] named anchors
javascript:(function(){var atags,i,name,a; anchs = document.anchors; for(i=0; i<anchs.length; ++i) { a = anchs[i]; name = a.name; a.appendChild(document.createTextNode("#" + name)); a.style.border = "1px solid"; a.href = "#" + name; } })();
- Description
- "Makes anchors visible, letting you link to or bookmark a section of a page. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#named_anchors
[edit] onerror status
javascript:(function() { var i=0; window.onerror = function(m,u,n) { window.status = "JS Error #" + ++i + ": '" + m + "' " + (/^javascript:/(u) ? "(bookmarklet)" : "(line " + n + " of " + u + ")"); return true;/*suppress default error message*/ }})();
- Description
- "When a JavaScript error occurs, shows the error message in the status bar. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#onerror_status
[edit] onerror alert
javascript:window.onerror = function(m,u,n) { alert("JS error: " + m + (/^javascript:/(u) ? "\n\n(bookmarklet)" : "\n\nLine " + n + " of \n" + u)); return true;/*suppress default error message*/ }; void 0
- Description
- "When a JavaScript error occurs, shows the error message in a dialog. "
- From
- http://www.squarefree.com/bookmarklets/webdevel.html#onerror_alert
[edit] Validation Bookmarklets
[edit] validate html
javascript:(function(){ function fixFileUrl(u) { var windows,u; windows = (navigator.platform.indexOf("Win") != -1); /* chop off file:///, unescape each %hh, convert / to \ and | to : */ u = u.substr(windows ? 8 : 7); u = unescape(u); if(windows) { u = u.replace(/\//g,"\\"); u = u.replace(/\|/g,":"); } return u; } /* bookmarklet body */ var loc,fileloc; loc = document.location.href; if (loc.length > 9 && loc.substr(0,8)=="file:///") { fileloc = fixFileUrl(loc); if (prompt("Copy filename to clipboard, press enter, paste into validator form", fileloc) != null) { document.location.href = "http://validator.w3.org/file-upload.html" } } else document.location.href = "http://validator.w3.org/check?uri=" + escape(document.location.href); void(0); })();
- Description
- "Validates HTML using the <a href="http://www.w3.org/">W3C</a> <a href="http://validator.w3.org/">HTML validator</a>. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#validate_html
[edit] quick validate
javascript:location = 'http://validator.w3.org/check?uri=' + escape(location) + ((document.doctype && document.doctype.toString()) ? '' : '&doctype=HTML+4.01+Transitional') + '&charset=' + document.characterSet + '&ss=1';
- Description
- "Validates HTML, avoiding "missing doctype" and "missing charset" errors. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#quick_validate
[edit] netcraft
javascript:location = 'http://uptime.netcraft.com/up/graph?site='+escape(location); void 0
- Description
- "Tells you what type of server a site uses and displays an uptime graph. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#netcraft
[edit] http headers
javascript:document.location.href = 'http://webtools.mozilla.org/web-sniffer/view.cgi?url=' + escape(document.location.href)
- Description
- "Uses <a href="http://webtools.mozilla.org/web-sniffer/">Web Sniffer</a> to display HTTP headers. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#http_headers
[edit] grayscale
javascript:document.body.style.filter='gray';void(0);
- Description
- "Applies a "black and white TV" filter to the page. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#grayscale
[edit] PDAize
javascript:var s=document.createElement('link');s.setAttribute('href','http://www.ressukka.net/misc/pdaize.css');s.setAttribute('rel','stylesheet');s.setAttribute('type','text/css'); document.getElementsByTagName('head')[0].appendChild(s);var l=document.getElementsByTagName('img');for(var i=0;il.length;i++){if(l[i].width>176){l[i].height*=176/l[i].width;l[i].width=176}else if(l[i].naturalWidth>176){var e=176/l[i].naturalWidth;l[i].height=l[i].naturalHeight*e;l[i].width=176;}}void(0);
- Description
- "Lets you see what a page might look like on a PDA. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#PDAize
[edit] linearize
javascript:(function(){var D=document,e,styles="table,thead,tbody,tr,th,td{display:block!important;}*{width:auto!important;height:auto!important;position:static!important;float:none!important;margin-left:0!important;margin-right:0!important;} img,iframe,embed,object{display:none;} body {margin:4px!important;}"; e=D.createElement('link'); e.rel='stylesheet'; e.href=window.opera ? "javascript:'"+styles+"'" : "data:text/css,"+styles; D.getElementsByTagName("head")[0].appendChild(e)})()
- Description
- "Linearizes the text of the page and removes most non-text elements. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#linearize
[edit] check images
javascript:(function(){var ims=document.images, brokenCount=0, brokenURLs="", text, i; for(i=0;i<ims.length;++i) if (! (ims[i].naturalHeight || ims[i].fileSize > 0)) { ++brokenCount; brokenURLs += "URL: " + ims[i].src + "\n"; }; text = brokenCount + " broken image" + (brokenCount==1?"":"s"); if(brokenCount) alert(text + ":\n\n" + brokenURLs); else alert("No broken images."); })()
- Description
- "Lists the URLs of broken images. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#check_images
[edit] zap images
javascript:(function(){function toArray (c){var a, k;a=new Array;for (k=0; k < c.length; ++k)a[k]=c[k];return a;}var images, img, altText;images=toArray(document.images);for (var i=0; i < images.length; ++i){img=images[i];altText=document.createTextNode(img.alt);img.parentNode.replaceChild(altText, img)}})();
- Description
- "Replaces each image with its <a href="http://ppewww.ph.gla.ac.uk/%7Eflavell/alt/alt-text.html">alternate text</a>. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#zap_images
[edit] check alts
javascript:(function(){function d(s){return s==null?"missing":"\""+s+"\""}var c=[0,0,0],i,P,a,y,D=document; if(D.createElement("img").getAttribute("alt")!=null)alert("Your browser misreports missing alts as empty alts.");for(i=0;P=D.images[i];++i){a=P.getAttribute("alt");y=!!a+(a!=null);++c[y];P.style.border="2px "+["dotted red","dashed #888","solid green"][y];P.title="Alt: "+d(a)+", Title: "+d(P.getAttribute("title"));}top.status="Image alt texts: "+c[0]+" missing, "+c[1]+" empty, "+c[2]+" present"})()
- Description
- "Shows which images have missing and empty alts using borders and tooltips. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#check_alts
[edit] list alts
javascript:(function(){var A={},B=[],D=document,i,e,a,k,y,s,m,u,t,r,j,v,h,q,c,G;function C(t){return D.createElement(t)}function P(p,c){p.appendChild(c)}function T(t){return D.createTextNode(t)}for(i=0;e=D.images[i];++i){a=e.getAttribute("alt");k=escape(e.src)+"%"+(a!=null)+a;if(!A[k]){y=!!a+(a!=null);s=C("span");s.style.color=["red","gray","green"][y];s.style.fontStyle=["italic","italic",""][y];P(s,T(["missing","empty",a][y]));m=e.cloneNode(true);if(m.width>350)m.width=350;B.push([0,7,T(e.src.split('/').reverse()[0]),m,s]);A[k]=B.length;}u=B[A[k]-1];u[1]=(T(++u[0]));}t=C("table");t.border=1;r=t.createTHead().insertRow(-1);for(j=0;v=["#","Filename","Image","Alternate text"][j];++j){h=C("th");P(h,T(v));P(r,h);}for(i=0;q=B[i];++i){r=t.insertRow(-1);for(j=1;v=q[j];++j){c=r.insertCell(-1);P(c,v);}}G=open().document;G.open();G.close();P(G.body,t);})()
- Description
- "Lists images and their alternate text (or "missing" or "empty"). "
- From
- http://www.squarefree.com/bookmarklets/validation.html#list_alts
[edit] blogidate html4.01 transitional
javascript:(function(){var s,d,f,i,x,u; s='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title></title></head><body><div>';function R(w){var i,x; for(i=0;x=w.document.getElementsByTagName("textarea")[i];++i){s+=x.value;u=true;} for(i=0;x=w.frames[i];++i)try{R(x)}catch(e){};};R(top); s+="\n</div></body></html>"; if(!u){alert("No textareas to validate!"); return; } d=open().document; d.write('<body><form action=http://www.htmlhelp.com/cgi-bin/validate.cgi method=post>'); f=d.forms[0]; for(i=0;x=["area","warnings","input"][i];++i) { d.write("<input type=hidden name="+x+">"); f[i].value=[s,"yes","yes"][i]; } f.submit(); })()
- Description
- "Validates HTML fragments in textareas. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#blogidate_html4.01_transitional
[edit] blogidate html4.01 strict
javascript:(function(){var s,d,f,i,x,u; s='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title></title></head><body><div>';function R(w){var i,x; for(i=0;x=w.document.getElementsByTagName("textarea")[i];++i){s+=x.value;u=true;} for(i=0;x=w.frames[i];++i)try{R(x)}catch(e){};};R(top); s+="\n</div></body></html>"; if(!u){alert("No textareas to validate!"); return; } d=open().document; d.write('<body><form action=http://www.htmlhelp.com/cgi-bin/validate.cgi method=post>'); f=d.forms[0]; for(i=0;x=["area","warnings","input"][i];++i) { d.write("<input type=hidden name="+x+">"); f[i].value=[s,"yes","yes"][i]; } f.submit(); })()
- Description
- "Validates HTML fragments in textareas. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#blogidate_html4.01_strict
[edit] blogidate xhtml1 transitional
javascript:(function(){var s,d,f,i,x,u; s='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title></title></head><body><div>';function R(w){var i,x; for(i=0;x=w.document.getElementsByTagName("textarea")[i];++i){s+=x.value;u=true;} for(i=0;x=w.frames[i];++i)try{R(x)}catch(e){};};R(top); s+="\n</div></body></html>"; if(!u){alert("No textareas to validate!"); return; } d=open().document; d.write('<body><form action=http://www.htmlhelp.com/cgi-bin/validate.cgi method=post>'); f=d.forms[0]; for(i=0;x=["area","warnings","input"][i];++i) { d.write("<input type=hidden name="+x+">"); f[i].value=[s,"yes","yes"][i]; } f.submit(); })()
- Description
- "Validates XHTML fragments in textareas. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#blogidate_xhtml1_transitional
[edit] blogidate xhtml1 strict
javascript:(function(){var s,d,f,i,x,u; s='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html><head><title></title></head><body><div>';function R(w){var i,x; for(i=0;x=w.document.getElementsByTagName("textarea")[i];++i){s+=x.value;u=true;} for(i=0;x=w.frames[i];++i)try{R(x)}catch(e){};};R(top); s+="\n</div></body></html>"; if(!u){alert("No textareas to validate!"); return; } d=open().document; d.write('<body><form action=http://www.htmlhelp.com/cgi-bin/validate.cgi method=post>'); f=d.forms[0]; for(i=0;x=["area","warnings","input"][i];++i) { d.write("<input type=hidden name="+x+">"); f[i].value=[s,"yes","yes"][i]; } f.submit(); })()
- Description
- "Validates XHTML fragments in textareas. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#blogidate_xhtml1_strict
[edit] blogidate xml well-formedness
javascript:(function(){var u; function recurse(w){var i,x; for(i=0;x=w.document.getElementsByTagName("textarea")[i];++i){checkWellFormedness(x, w.document);u=true;} for(i=0;x=w.frames[i];++i)try{recurse(x)}catch(e){}} recurse(top); if(!u){alert("No textareas to validate!"); } function changeBackground(ta, c) { ta.style.backgroundColor = c; ta.style.color = "#000"; ta.addEventListener("input", f, false); function f() { this.removeEventListener("input", f, false); this.style.backgroundColor="#fff"; window.status = ""; } } function checkWellFormedness(ta, doc) { var x,de,error,line,column,lines,cc,i,spot; x=doc.createElement("iframe"); x.style.display="none"; x.onload = g; function g() { window.status = window.status;/*Prevent "done" for second textarea from overriding error message for first textarea*/ de = x.contentDocument.documentElement; if(de.tagName == "testroot") { changeBackground(ta, "#bfb"); } else if (de.tagName == "parsererror") { changeBackground(ta, "#fdd"); de.normalize(); error = de.childNodes[0].data.split("\n"); if(/(\d+)[^\d]+(\d+)/(error[2])) { line = parseInt(RegExp.$1); column = parseInt(RegExp.$2); window.status = "Line " + (line-2) + " column " + column + ": " + error[0]; lines = ta.value.split("\n"); cc = 0; for(i=0; i < (line-3); ++i) cc += lines[i].length + 1; spot = Math.min(cc + (column - 1), ta.value.length - 1); ta.focus(); ta.selectionStart = spot; ta.selectionEnd = spot + 2; } else alert("No line number information!?") } else alert("Unexpected root!? " + de.tagName);}; x.src='data:text/xml;charset=UTF-8,' + encodeURIComponent('<?xml version="1.0" encoding="UTF-8" ?>\n<testroot>\n' + (ta.value) + '</testroot>'); doc.body.appendChild(x); } })()
- Description
- "Quickly checks the well-formedness of XML fragments in textareas. "
- From
- http://www.squarefree.com/bookmarklets/validation.html#blogidate_xml_well-formedness
[edit] Miscellaneous Bookmarklets
[edit] up
javascript:if (location.pathname == "/"); else if (location.pathname.charAt(location.pathname.length-1) == "/") location = ".."; else location = "."; void 0
- Description
- "Goes up a directory from the page you're viewing. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#up
[edit] top
javascript:location.pathname = ""; void 0
- Description
- "Goes to the top level of the site. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#top
[edit] increment
javascript:(function(){ var e,s; IB=1; function isDigit(c) { return ("0" <= c && c <= "9") } L = location.href; LL = L.length; for (e=LL-1; e>=0; --e) if (isDigit(L.charAt(e))) { for(s=e-1; s>=0; --s) if (!isDigit(L.charAt(s))) break; break; } ++s; if (e<0) return; oldNum = L.substring(s,e+1); newNum = "" + (parseInt(oldNum,10) + IB); while (newNum.length < oldNum.length) newNum = "0" + newNum; location.href = L.substring(0,s) + newNum + L.slice(e+1); })();
- Description
- "Increases the last number in the URL by 1. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#increment
[edit] decrement
javascript:(function(){ var e,s; IB=-1; function isDigit(c) { return ("0" <= c && c <= "9") } L = location.href; LL = L.length; for (e=LL-1; e>=0; --e) if (isDigit(L.charAt(e))) { for(s=e-1; s>=0; --s) if (!isDigit(L.charAt(s))) break; break; } ++s; if (e<0) return; oldNum = L.substring(s,e+1); newNum = "" + (parseInt(oldNum,10) + IB); while (newNum.length < oldNum.length) newNum = "0" + newNum; location.href = L.substring(0,s) + newNum + L.slice(e+1); })();
- Description
- "Decreases the last number in the URL by 1. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#decrement
[edit] make numbered list
javascript:(function(){ function selectColor(i) { return ["#fdc", "#cdf", "#bfd", "#dbf", "#fbd"] [i%5]; } var u=location.href, ul=u.length; var tparts=[""], zparts=[], nz=0; function isDigit(c) { return ("0" <= c && c <= "9"); } for (i=0; i<ul; ) { for (; i<ul && !isDigit(u.charAt(i)); ++i) tparts[nz] += u.charAt(i); if(i<ul) { zparts[nz]=""; for (; i<ul && isDigit(u.charAt(i)); ++i) zparts[nz] += u.charAt(i); tparts[nz+1]=""; ++nz; } } if(!nz) { alert("No numbers in URL."); return; } D=window.open().document; D.write(); D.close(); function a(n) { A(D.body,n); } function A(p,n) { p.appendChild(n); } function E(q) { return D.createElement(q); } function cT(t) { return D.createTextNode(t) } function cBR() { return E("br"); } function cS(t,ci) { var s=E("span"); s.style.background=selectColor(ci); s.style.fontWeight="bold"; A(s, cT(t)); return s; } function cTB(v,oc) { var b=E("input"); b.size=6; b.value=v; b.addEventListener("input", oc, false); return b; } function cCB(t,oc) { var L=E("label"), b=E("input"); b.type="checkbox"; b.checked=true; b.onchange=oc; A(L,b); A(L,cT(t)); return L; } function cL(nz,tparts,zparts) { var L=E("a"); var u=""; for (var i=0; i<nz; ++i) { A(L,cT(tparts[i])); A(L,cS(zparts[i], i)); u += tparts[i]+zparts[i]; } A(L,cT(tparts[nz])); u += tparts[nz]; L.href=u; L.target="_blank"; return L; } a(cT("Original URL: ")); a(cBR()); a(cL(nz, tparts, zparts)); a(cBR()); a(cBR()); var fromBoxes=[], toBoxes=[], padChecks=[]; for (i=0; i<nz; ++i) { a(cT("Run ")); a(cS(zparts[i], i)); a(cT(" from ")); a(fromBoxes[i]=cTB(zparts[i], listURLs)); a(cT(" to ")); a(toBoxes[i]=cTB(zparts[i], listURLs)); a(cT(" (")); a(j=cCB(" Pad with zeroes to maintain length", listURLs)); padChecks[i]=j.childNodes[0]; a(cT(")")); a(cBR()); } a(cBR()); resultDiv=E("div"); a(resultDiv); listURLs(); function listURLs() { while (resultDiv.childNodes.length) resultDiv.removeChild(resultDiv.childNodes[0]); var lows=[], highs=[]; for (i=0; i<nz; ++i) { lows[i]=parseInt(fromBoxes[i].value, 10); highs[i]=parseInt(toBoxes[i].value, 10); if(highs[i]-lows[i] > 999) { A(resultDiv, cT("Too many")); return; } } urls=[]; function cb(sta) { var newzparts=[]; for (var i=0; i<nz; ++i) { var z=""+sta[i]; if(padChecks[i].checked) while (z.length < zparts[i].length) z="0"+z; newzparts[i]=z; } A(resultDiv, cL(nz, tparts, newzparts)); A(resultDiv, cBR()); } fors(nz, cb, lows, highs); } function fors (n, callback, lows, highs) { function fors_inner (states, v) { if(v >= n) callback(states); else for (states[v]=lows[v]; states[v] <= highs[v]; ++(states[v])) fors_inner(states, v+1); } fors_inner ([], 0); } })()
- Description
- "Creates a list of URLs with each number looped through a range you specify. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#make_numbered_list
[edit] go to referrer
javascript:if(!document.referrer) alert("No referrer!"); else document.location = document.referrer; void 0
- Description
- "Like clicking Back, but works even after opening a link in a new window. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#go_to_referrer
[edit] back to first
javascript:for(i=1; i<=history.length; ++i) history.go(-i); void 0
- Description
- "Goes to the first page in this window's history. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#back_to_first
[edit] add sidebar
javascript:(function(){var x; x=prompt('Sidebar title:', document.title); if (x != null) { window.sidebar.addPanel(x,location.href,''); } })();
- Description
- "Adds the page you're viewing as sidebar panel. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#add_sidebar
[edit] domain owner
javascript:(function(){var h,p; h = location.host.split('.'); p = h.length; if (h[p-1].match(/com$|net$|org$|edu$/i)) { location = 'http://www.netsol.com/cgi-bin/whois/whois?SearchType=do&STRING=' + h[p-2] + '.' + h[p-1]; } else { alert('This bookmarklet can only look up owners for .com, .net, .org, and .edu domains.'); } void(0); })();
- Description
- "Tells you who owns the domain of the page you're viewing. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#domain_owner
[edit] edit page
javascript:document.body.contentEditable = 'true'; document.designMode='on'; void 0
- Description
- "Lets you edit the page. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#edit_page
[edit] view cookies
javascript:alert('Cookies stored by this host or domain:\n\n' + document.cookie.replace(/; /g,'\n'));
- Description
- "Shows the cookies stored by the page you're viewing. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#view_cookies
[edit] transfer cookies
javascript:h=location.host;z="Bookmarklet: <a href=\"javascript:if(location.host!='"+h+"')location='http://"+h;v=document;function s(c,y){v.cookie=a=c+"; domain="+d+"; path=/; expires="+new Date((new Date).getTime()+y*1e11).toGMTString()}C=v.cookie.split("; ");d=".."+h;while(d=(""+d).substr(1).match(/\..*$/))for(i in C)if(c=C[i]){s(c.match(/.*=/)+C,1);q=v.cookie;q.split(";").length>C.length?s(c,-1):q.match(C)?(s(c,1),z=a+"<br>"+z+"';document.cookie='"+a):0}v.write(z+"';[].v\">my "+h+" cookies</a>")
- Description
- "Creates a bookmarklet you can use to move cookies to another browser. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#transfer_cookies
[edit] zap cookies
javascript:(function(){C=document.cookie.split("; ");for(d="."+location.host;d;d=(""+d).substr(1).match(/\..*$/))for(sl=0;sl<2;++sl)for(p="/"+location.pathname;p;p=p.substring(0,p.lastIndexOf('/')))for(i in C)if(c=C[i]){document.cookie=c+"; domain="+d.slice(sl)+"; path="+p.slice(1)+"/"+"; expires="+new Date((new Date).getTime()-1e11).toGMTString()}})()
- Description
- "Removes cookies set by the site, including cookies with paths and domains. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#zap_cookies
[edit] babelfish
javascript:(function() { var d,b,f,u,L,i,K,t, LL="zh Chinese-simplified,zt Chinese-traditional,nl Dutch,fr French,de German,el Greek,it Italian,ja Japanese,ko Korean,pt Portuguese,ru Russian,es Spanish".split(","); d=open().document; b=d.body; f=d.createElement("form"); b.appendChild(f); f.action="http://babelfish.altavista.com/babelfish/trurl_pagecontent"; u=d.createElement("input"); u.name="url"; u.style.width="100%"; u.value=location; f.appendChild(u); for (i=0; L=LL[i]; ++i) { K = L.split(" "); f.appendChild(d.createElement("br")); t=d.createElement("button"); t.name="lp"; t.value=K[0]+"_en"; t.innerHTML = "<b>" + K[1] + "</b> to English"; f.appendChild(t); } })()
- Description
- "Translates from 11 languages (you choose the language) to English. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#babelfish
[edit] google translate
javascript:location='http://translate.google.com/translate?u=' + encodeURIComponent(location);
- Description
- "Translates from 5 languages (it guesses the language) to English. "
- From
- http://www.squarefree.com/bookmarklets/misc.html#google_translate
-
- Search Engine Optimization Bookmarklets
- find links to squarefree
- google backlinks
- atw internal backlinks
- atw external backlinks
- atw plaintext backlinks
- google site search: all
- atw site search: all
- number google hits
- open in ie
- word frequency
- Log Analysis Bookmarklets
- linkify
- query as link text
- find links to squarefree
- Keyword Bookmarklets for Scripters
- j (statement)
- ja (expression)
- jb (node)
- jp (object)
- jcs (node)
- Flash Bookmarklets
- seek bar
- seek bar for IE
- pause
- rewind
- fast-forward
- rewind 5s
- forward 5s
- Search bookmarklets
- google site search
- google site search: all
- google site search: title
- num=100
- num=10
- num=1
- filter=0
- @alltheweb
- @teoma
- @msn
- @altavista
- wayback newest
- wayback search
- Search Engine Optimization Bookmarklets
[edit] Bookmarklets.com
-
- Page Data http://bookmarklets.com/tools/data/index.phtml
- Page Freshness? - date of last modification
- List Email Links - mailto
- Number of Links
- List All Links
- Display Images - show all images in a list
- Find Phone Numbers
- Document Size in Windowfulls
- Send Location
- Send Selected Text
- Make Page with Selection
- Edit Copy of Selection
- Number of Words in Selection
- List Words in Selected Text
- Statusbar Shows URL - zap javascript onmouseover handlers
- Navigation http://bookmarklets.com/tools/navigation/index.phtml
- Go to Random Link
- Go to Selected URL - i.e. even non-hyperlinked urls
- Duplicate Page
- Previous Page in New Window -referring page actually
- Up a Directory
- Set In-Page Bookmark
- Go To In-Page Bookmark
- Add Domain to Favorites
- Find Any in Page...
- Speed Reader - 3 speeds available
- Show Occurrences of Word - one after another
- Go to First Page in Window
- Go to Previous Page in Website
- Back All Frames to Beginning
- Back, Forward, Reload, Home, Find, Stop - standard navigation buttons
- Back2, Back3
- Target Links to New
- Target Links to Special
- Target Links to Top
- Target Links to Self
- Show robots.txt for this Domain
- Make Link for Page
- Page Look http://bookmarklets.com/tools/look/index.phtml
- Page Color - background color
- Page Color to White
- Remove Background Image
- Text Color...
- Zoom on First Image
- Hide All Images
- Hide 468 x 60 Banners
- Biggest Frame to Top - de-frame websites
- Scroll Page - auto-scroll
- Scroll Page... (variable) - auto-scroll
- Text Font to Verdana
- Text Font to Arial
- Split Frames into Windows
- Underlines Off/On
- Highlight Links
- Mega Blink
- Windowing http://bookmarklets.com/tools/windowing/index.phtml
- Move Window Behind
- Center Window
- Align Window to Nearest Corner
- Align Window to Nearest Side
- Resize Window to Narrow
- Resize Window to 640 x 480, 800 x 600, Full Screen
- Resize Window to Quarter
- Setup 2 Windows
- Setup 4 Windows
- Make Link to Page & Window
- Misc http://bookmarklets.com/tools/misc/index.phtml
- Date and Time
- Days Left this Year
- Tile Image or Animation...
- Backdrop
- Stop Music
- Activate New Plugin
- IP Address
- Read Cookie for Site
- Record Comment for Site
- Read Comment for Site
- Personal Note...
- AutoFill Anonymous
- Make Mailto Bookmarklet...
- Make Mail Folder Bookmarklet...
- Executive Dice Roller...
- Confidence Booster
- Lyrics for "99 Bottles of Beer"
- ROT13 Encoder/Decoder
- Valentine
- Dancing Netscape Logo
- Search http://bookmarklets.com/tools/search/index.phtml
- More Info About - http://bookmarklets.com/moreinfo.phtml - a meta search system
- Other Search tools
- Search
- Search Alta Vista...
- Search Lycos...
- Search WebCrawler...
- Search Google...
- Search Northern Light...
- Smart Browsing...
- Directories
- Search Yahoo...
- Search LookSmart...
- Search Open Directory...
- Search The Mining Co. ...
- Metasearch
- Search MetaCrawler...
- Search Inference Find...
- Search SavvySearch...
- Search Metafind...
- Search Dogpile...
- Search Mamma...
- News
- Search CNN News...
- Search Wired News...
- Search ABC News...
- Search News.com...
- Discussion groups
- Search Discussion Groups...(DejaNews)
- Search eGroup Discussion Groups...
- Search Mailing Lists (Reference.com)
- Discusion Group Author Profile (DejaNews)
- Search for Mailing List (Vivian)
- Search for Mailing List (Liszt)
- Search for Mailing List (Tile.net)
- Images
- Icon Search (Icon Bank)
- Video Search (WebSEEk)
- Philip Greenspun's Images...
- AltaVista Photo Finder...
- Sunsite Image Finder...
- Lycos Picture Search...
- Yahoo Picture Search...
- Words
- Thesaurus... (Roget)
- Phrase Finder...
- English Dictionary... (Dictionary.com)
- English Dictionary-Thesaurus... (Wordsmyth)
- Search for Cliche...(Cliche Finder)
- Search Dictionary...(UCSD Webster)
- Acronym or Abbreviation...
- Search American Literature... (HTI)
- Search TechEncyclopedia...
- Search the Quran
- Search the King James Bible
- Music
- Search OLGA...
- Find CD Track Title... (cddb)
- Song Lyrics... (Lyrics Server)
- Search for WAV files... (Filez)
- Design
- What's that site running? (Netcraft)
- Validate HTML (W3C)
- Search PHP list...
- JavaScript Info...(Sprockets)
- Developer Info...(DevSearch)
- Misc
- Map of (non-U.S.) City... (MapBlast)
- Stock Quotes (Nasdaq)...
- Stock quotes - by name (Pathfinder)
- Search for Movies... (Filez)
- Find a Recipe... (SOAR)
- Find a Gourmet Recipe...
- Home Maintenance and Repair...
- Search Pathfinder (Time, Life,...)
- Software
- Software Metasearch... (Softcrawler)
- Windows Shareware... (Shareware.com)
- Search for Windows Files... (Filez)
- Macintosh Shareware... (Shareware.com)
- Search for Macintosh Files... (Filez)
- People
- Reverse phone lookup... (Infospace)
- Find somebody's homepage... (Googol)
- Search Biography...
- Health
- Search Virtual Hospital...
- Search KidsHealth...
- Search Your Health Daily...
- Search Merck Manual...
- Search
- Calculator and Converter tools http://bookmarklets.com/tools/convert/index.phtml
- Calculator...
- Download Calculator...
- Salary Calculator...
- Average...
- Add to Running Total...
- Subtract from Running Total...
- Report Running Total...
- Clear Running Total
- Converters
- Temperature - Fahrenheit to Celsius...
- Length - Inches to Millimeters...
- Length - Inches to Centimeters...
- Length - Yards to Meters...
- Length - Miles to Kilometers...
- Area - Square Feet to Square Meters...
- Area - Square Miles to Square Kilometers...
- Area - Acres to Hectares...
- Weight - Fluid Ounces to Grams...
- Weight - Pounds to Kilograms...
- Weight - U.S. Tons to Metric Tons...
- Volume - Ounces to Milliliters...
- Volume - Pints to Liters...
- Volume - Quarts to Liters...
- Volume - Gallons to Liters...
- (and reverse versions for all of these)
- Design - developer - http://bookmarklets.com/tools/design/index.phtml
- 216 Standard Colors
- RGB to Hex... - and reverse
- Basic ISO Latin Characters
- Character to ASCII - and reverse
- Escape for Symbol
- Simple Table Code
- Screen Properties
- Reformat Form
- Edit HTML of Page
- Find and Replace in Source...
- Bookmarklets Editor
- Length of String...
- Ugly Variable Generator
- Bookmarklet to Function
- Page Data http://bookmarklets.com/tools/data/index.phtml
[edit] Gazingus.org
- http://www.gazingus.org/html/Validation_Bookmarklets.html
- W3C
- Validate Markup (W3C Beta)
- Validate Markup
- Validate (with options)
- Validate Stylesheets
- Web Design Group (htmlhelp.com)
- Validate Markup
- Validate Markup (with options)
- CAST (cast.org)
- Validate Accessibility
- W3C
- http://www.gazingus.org/html/Page_Weight_and_Speed_Bookmarklet.html
- Page Weight & Speed - determines how big is the current page(and included images) and how long it will take to download (IE/Win only) (uses script on his server)
- http://www.gazingus.org/html/Anatomy_of_a_Bookmarklet.html
- Search Google - also includes considerable information on how to make bookmarklets
[edit] Scribbling.net
[edit] The ly detector
javascript:function hl(node,word,re){if(node.hasChildNodes) {var hi_cn;for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) {hl(node.childNodes[hi_cn],word,re);}}if (node.nodeType == 3) { tempNodeVal = node.nodeValue.toLowerCase();tempWordVal = word.toLowerCase();if (re.test(tempNodeVal)) {pn = node.parentNode;if (pn.className != word) {nv = node.nodeValue;ni = tempNodeVal.indexOf(tempWordVal);before = document.createTextNode(nv.substr(0,ni));docWordVal = nv.substr(ni,word.length);after = document.createTextNode(nv.substr(ni+word.length));hiwordtext = document.createTextNode(docWordVal);hiword = document.createElement('span');hiword.className=word;hiword.style['backgroundColor']='yellow';hiword.appendChild(hiwordtext);pn.insertBefore(before,node);pn.insertBefore(hiword,node);pn.insertBefore(after,node);pn.removeChild(node);}}}}var lyRE=/(\w)(ly)(\b)/gim;hl(document.getElementsByTagName('body')[0],'ly',lyRE);
- Description
- A bookmarklet ... which will highlight all the words on a web page which end in -ly.
- From
- http://www.scribbling.net/the_ly_detector
[edit] Analyze Page Links
javascript:var total = 0;var internal = 0;var external = 0;for (i=0;i<document.links.length;i++) {if (document.links[i].protocol=='http:'){if ( document.links[i].hostname == document.domain)internal++;else {external++;}total++;}}var pctInternal = Math.round((internal*100)/total);var pctExternal = 100-pctInternal;alert(document.location+'\nTotal document links: '+total+'\n'+pctInternal+'% internal links \n'+pctExternal + '% external links');
- Description
- Shows stats for # of links, % external, and % internal.
- From
- http://scribbling.net/analyze-web-page-links
[edit] Ftrain.com
[edit] The Passivator
javascript:var verbsRE=/(\b)(i\'m|it\'s|he\'s|here\'s|she\'s|that\'s|there\'s|they\'re|we\'re|what\'s|who\'s|you\'re|is|are|am|are|was|were|be|being|been|go)(\b)/gi;var lyRE=/(\w)(ly)(\b)/gim;function HL(node){if(node.hasChildNodes){var hi_cn;for(hi_cn=0;hi_cn<node.childNodes.length;hi_cn++){HL(node.childNodes[hi_cn]);}}if(node.nodeType==3){var tempNodeVal=node.nodeValue;if(verbsRE.test(tempNodeVal)){tempNodeVal=tempNodeVal.replace(verbsRE,"$1<span style='background-color:yellow;color:black;border:1px solid black;'>$2</span>$3");tempNodeVal=tempNodeVal.replace(lyRE,"$1<span style='background-color:#0ff;color:black;border:1px solid black;'>$2</span>$3");newNode=document.createElement('span');newNode.innerHTML=tempNodeVal;pn=node.parentNode;pn.replaceChild(newNode,node);}}}HL(window.document.getElementsByTagName('body')[0]);
- Description
- "A passive verb and adverb flagger for Mozilla-derived browsers, Safari, and Opera 7.5, with caveats." (quoted from source, see page for caveats and more details.)
- From
- http://www.ftrain.com/ThePassivator.html
[edit] Kryogenix.org
- Show applicable styles - http://www.kryogenix.org/days/applicable
- Show computed styles for element - http://www.kryogenix.org/days/bookmarklet
- Show DOM Tree II - http://www.kryogenix.org/days/2004/05/17/showdomtreeii
- Show DOM tree bookmarklet - http://www.kryogenix.org/days/2004/05/09/bookmarkletShow
- Show anchors - http://www.kryogenix.org/days/2002/09/26/anchors
- Using del.icio.us - http://www.kryogenix.org/days/2005/03/15/delicious
- Reverso - reverses the text on the current page - http://www.kryogenix.org/days/2004/02/13/reverso
[edit] Tantek.com
[edit] Authoring
[edit] Multivalidator: HTML, CSS & HREFs all in one. - validate pages
[edit] Multivalidator
javascript:if (0) void('Multivalidator script (c)2002 Tantek Celik - last modified 2002.03.15');var p27=String.fromCharCode(37)+'27',d=document.location,ft='%3Cframe ',fs=ft+'src=',fe='\' scrolling=\'auto\'>',fc=ft+'style=\'border:2px solid #ff0\' src=\'http://',fm='%3C/frameset>';var h=fs+'\'javascript:document.write('+p27+'%3C!DOCTYPE%20HTML%20PUBLIC%20%22-//W3C//DTD%20HTML%204.0//EN%22%3E%3Cbody%20style%3D%22margin:0;padding:2px%206px%22%3E';var h1='%3Ch1%20style%3D%22display:inline;font-size:18px;margin:0;%22%3E';var e='%3E%3C/body%3E'+p27+')\' scrolling=\'no\' noresize>';var q=String.fromCharCode(34);var r='%20results',v='%20validator'+r,w='validator.w3.org/check';var ds='%3C!DOCTYPE HTML PUBLIC '+q+'-//W3C//DTD HTML 4.0 Frameset//EN'+q+'>%3Chtml>%3Chead>%3Ctitle>Multivalidator%3C/title>%3C/head>%3Cframeset cols=\'50%,50%\'>%3Cframeset rows=\'24,*\'>';ds+=h+'%3Cdiv%3E'+h1+'Page:%3C/h1%3E'+d+'%3C/div'+e;e='%3C/h1'+e;h+='%3Ch1%20style%3D%22display:inline;font-size:18px;margin:0;%22%3E';ds+=h+'%3Cscript>document.location=%22'+d+'%22%3C/script>'+e+fm+'%3Cframeset rows=\'24,*,24,*,24,*\'>';ds+=h+'HTML'+v+'%3Ca%20title%3D%22Refresh%20to%20remultivalidate.%20Click%20for%20more%20info%20on%20favelets.%20-Tantek%22%20href%3Dhttp://favelets.com/%20target%3Dhelp%20style%3D%22float:right;padding:1px;width:1em;font:10px%20Avant%20Garde,Chicago,Times,Arial,serif;text-decoration:none%22>@%3C/a>'+e;ds+=fc+w+'?uri='+d+fe;ds+=h+'CSS'+v+e;ds+=fc+'jigsaw.w3.org/css-validator/validator?uri='+d+fe;ds+=h+'HREF%20checker'+r+e;ds+=fc+w+'link?url='+d+fe;ds+=fm+fm+'%3C/html>';document.open();document.write(ds);document.close();void(20020315);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Multivalidator Window
javascript:if (0) void('Multivalidator script (c)2002 Tantek Celik - last modified 2002.03.15');var p27=String.fromCharCode(37)+'27',d=document.location,ft='%3Cframe ',fs=ft+'src=',fe='\' scrolling=\'auto\'>',fc=ft+'style=\'border:2px solid #ff0\' src=\'http://',fm='%3C/frameset>';var h=fs+'\'javascript:document.write('+p27+'%3C!DOCTYPE%20HTML%20PUBLIC%20%22-//W3C//DTD%20HTML%204.0//EN%22%3E%3Cbody%20style%3D%22margin:0;padding:2px%206px%22%3E';var h1='%3Ch1%20style%3D%22display:inline;font-size:18px;margin:0;%22%3E';var e='%3E%3C/body%3E'+p27+')\' scrolling=\'no\' noresize>';var q=String.fromCharCode(34);var r='%20results',v='%20validator'+r,w='validator.w3.org/check';var ds='%3C!DOCTYPE HTML PUBLIC '+q+'-//W3C//DTD HTML 4.0 Frameset//EN'+q+'>%3Chtml>%3Chead>%3Ctitle>Multivalidator%3C/title>%3C/head>%3Cframeset cols=\'50%,50%\'>%3Cframeset rows=\'24,*\'>';ds+=h+'%3Cdiv%3E'+h1+'Page:%3C/h1%3E'+d+'%3C/div'+e;e='%3C/h1'+e;h+='%3Ch1%20style%3D%22display:inline;font-size:18px;margin:0;%22%3E';ds+=h+'%3Cscript>document.location=%22'+d+'%22%3C/script>'+e+fm+'%3Cframeset rows=\'24,*,24,*,24,*\'>';ds+=h+'HTML'+v+'%3Ca%20title%3D%22Refresh%20to%20remultivalidate.%20Click%20for%20more%20info%20on%20favelets.%20-Tantek%22%20href%3Dhttp://favelets.com/%20target%3Dhelp%20style%3D%22float:right;padding:1px;width:1em;font:10px%20Avant%20Garde,Chicago,Times,Arial,serif;text-decoration:none%22>@%3C/a>'+e;ds+=fc+w+'?uri='+d+fe;ds+=h+'CSS'+v+e;ds+=fc+'jigsaw.w3.org/css-validator/validator?uri='+d+fe;ds+=h+'HREF%20checker'+r+e;ds+=fc+w+'link?url='+d+fe;ds+=fm+fm+'%3C/html>';var w = window.open('about:blank','Multivalidator','toolbar=yes,status=yes,resizable=yes');w.document.write(ds);w.document.close();w.focus();void(20020315);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] HTML
[edit] W3C beta validator
javascript:void(document.location='http://validator.w3.org:8001/check?uri='+escape(document.location))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] W3C HTML validator
javascript:void(document.location='http://validator.w3.org/check?uri='+document.location)
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] WDG HTML validator
javascript:void(document.location='http://www.htmlhelp.com/cgi-bin/validate.cgi?url='+document.location)
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] W3C HREF validator
javascript:void(document.location='http://validator.w3.org/checklink?url='+document.location)
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] CSS
[edit] W3C CSS validator
javascript:void(document.location='http://jigsaw.w3.org/css-validator/validator?uri='+document.location)
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Toggle CSS style sheets
javascript:var i=0;if(document.styleSheets.length>0){cs=!document.styleSheets[0].disabled;for(i=0;i<document.styleSheets.length;i++) document.styleSheets[i].disabled=cs;};void(cs=true);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Screen sizes
[edit] PocketPC, iPaq 240x320
javascript:void(window.resizeTo(240,320))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] TV safe 544x372
javascript:void(window.resizeTo(544,372))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] VGA 640x480
javascript:void(window.resizeTo(640,480))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] SVGA 800x600
javascript:void(window.resizeTo(800,600))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] XGA 1024x768
javascript:void(window.resizeTo(1024,768))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] SXGA 1280x1024
javascript:void(window.resizeTo(1280,1024))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] UXGA 1600x1200
javascript:void(window.resizeTo(1600,1200))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Learning
[edit] CSS
[edit] View style rules
javascript:if (false)void('View style rules script by Tantek Celik - last modified 1998.10.27');var whn = (window.location.toString().replace(/[^a-z0-9]/gi,'_'))+'_sr';var imn = 0,ln = 0,isn = 0,undefined,r=String.fromCharCode(13),i=0,j=0;var st = '<HTML><HEAD><TITLE>'+document.title+' Style Rules</TITLE></HEAD><BODY STYLE=\'background:white;color:black;font:9pt FixedSys,Monaco,monospace;margin:3px 4px\'><PRE STYLE=\'background:white;color:black;font:9pt FixedSys,Monaco,monospace\'>'+r;st += '/* Style Rules For '+document.location+' */'+r+r;function appendRules(ti,ss) {st += '/* '+ti+' */'+r+r;var j=0;for (j=0;j<ss.rules.length;j++){st+=ss.rules[j].selectorText + ' { ' + ss.rules[j].style.cssText + ' }'+r; }st += r+r;}function imf(im) { var k=0;for (k=0;k<im.imports.length;k++)void(imf(im.imports[k]));imn++;var imt = 'external (imported) style sheet '+imn+': '+im.href;void(appendRules(imt,im));}for (i=0;i<document.styleSheets.length;i++){var s = document.styleSheets[i];var tt = s.owningElement.title;for (j=0;j<s.imports.length;j++){void(imf(s.imports[j]));}if (s.owningElement.tagName == 'STYLE'){isn++;if (tt=='' || tt==undefined)tt = 'untitled inline style sheet '+isn;}else if (s.owningElement.tagName == 'LINK'){ln++;if (tt=='' || tt==undefined)tt = 'persistent external (linked) style sheet '+ln;else if (s.owningElement.rel.toString().indexOf('alternate')==-1)tt = 'preferred external (linked) style sheet \''+tt+'\'';else if (true)tt = 'alternate external (linked) style sheet \''+tt+'\'';tt += ': '+ s.href;}void(appendRules(tt,s));}st+=r+'</BODY></HTML>';var w = window.open('about:blank',whn,'menubar,resizable,scrollbars');w.document.write(st);w.document.close();w.focus();void(19981027);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] View style sheets
javascript:if (false)void('View style sheets script by Tantek Celik - last modified 1998.10.20 ');var whn = (window.location.toString().replace(/[^a-z0-9]/gi,'_'))+'_ss';var imn = 0,ln = 0,isn = 0,sn = 0,undefined,i=0,j=0;for (i=0;i<document.styleSheets.length;i++){var s = document.styleSheets[i];var tt = s.owningElement.title;function imf(im) {var k=0;for (k=0;k<im.imports.length;k++)void(imf(im.imports[k]));sn++;imn++;var imt = 'imported style sheet '+imn;var w = window.open(im.href,whn+sn,'status,location,menubar,resizable,scrollbars');w.document.title = imt;w.document.createStyleSheet('');w.document.styleSheets[0].addRule('BODY','background:white;color:black;font:9pt FixedSys,Monaco,monospace;margin:3px 4px');w.document.styleSheets[0].addRule('PRE','background:white;color:black;font:9pt FixedSys,Monaco,monospace');w.focus();}for (j=0;j<s.imports.length;j++){void(imf(s.imports[j]));}if (s.owningElement.tagName == 'STYLE'){sn++;isn++;if (tt=='' || tt==undefined)tt = 'untitled inline style sheet '+isn;var t = '<HTML><HEAD><TITLE>'+tt+'</TITLE></HEAD><BODY STYLE=\'background:white;color:black;font:9pt FixedSys,Monaco,monospace;margin:3px 4px\'><PRE STYLE=\'background:white;color:black;font:9pt FixedSys,Monaco,monospace\'>';for (j=0;j<s.imports.length;j++){t+='@import url('+s.imports[j].href+')<BR>';}for (j=0;j<s.rules.length;j++){t+=s.rules[j].selectorText + ' { ' + s.rules[j].style.cssText + ' } <BR>'; } t+='</BODY></HTML>'; var w = window.open('about:blank',whn+sn,'menubar,resizable,scrollbars');w.focus();w.document.write(t);w.document.close();}else if (s.owningElement.tagName == 'LINK'){sn++;ln++;var w = window.open(s.href,whn+sn,'status,location,menubar,resizable,scrollbars');if (tt!= && tt!=undefined) w.document.title = tt;w.document.createStyleSheet();w.document.styleSheets[0].addRule('BODY','background:white;color:black;font:9pt FixedSys,Monaco,monospace;margin:3px 4px');w.document.styleSheets[0].addRule('PRE','background:white;color:black;font:9pt FixedSys,Monaco,monospace');w.focus();}}void(19981020);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] HTTP
[edit] View HTTP headers
javascript:void(document.location='http://www.delorie.com/web/headers.cgi?url='+escape(document.location))
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Scripts etc.
[edit] View scripts
javascript:if (false)void('View scripts script by Tantek Celik - last modified 1998.10.30');var whn = (window.location.toString().replace(/[^a-z0-9]/gi,'_'))+'_sc';var ln = 0,isn = 0,sn = 0,undefined,i=0,j=0;for (i=0;i<document.scripts.length;i++){var s = document.scripts[i];var tt = s.title;if (s.src=='' || s.src==undefined){sn++;isn++;if (tt=='' || tt==undefined)tt = 'untitled inline script '+isn;var t = '<HTML><HEAD><TITLE>'+tt+'</TITLE></HEAD><BODY STYLE=\'background:white;color:black;font:9pt FixedSys,Monaco,monospace;margin:3px 4px\'><PLAINTEXT>';t+=s.outerHTML; var w = window.open('about:blank',whn+sn,'menubar,resizable,scrollbars');w.document.write(t);w.document.close();w.focus();}else{sn++;ln++;var w = window.open(s.src,whn+sn,'status,location,menubar,resizable,scrollbars');if (tt!='' && tt!=undefined) w.document.title = tt;w.document.createStyleSheet('');w.document.styleSheets[0].addRule('BODY','background:white;color:black;font:9pt FixedSys,Monaco,monospace;margin:3px 4px');w.document.styleSheets[0].addRule('PRE,PLAINTEXT','background:white;color:black;font:9pt FixedSys,Monaco,monospace');w.focus();}}void(19981030);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] View images
javascript:if (false)void('View images script by Tantek Celik - modified 2003.02.11');var n = (window.location.toString().replace(/[^a-z0-9]/gi,'_'))+'_im';var sn = 0,ud,i=0,r='\r';var ss = r;l=document.images.length;if (l==0) alert('No images to see here. Move along.');else for (i=0;i<l;i++){var s = document.images[i];var u = s.src;if (u!='' && u!=ud && ss.indexOf(r+u+r)==-1){ ss+=u+r;sn++;var w=window.open(s.src,n+sn,'height='+Math.max(s.height,32)+',width='+Math.max(s.width,32)+',status=no,location,menubar,resizable,scrollbars');w.focus();}}void(20030211);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Reading
[edit] Translation
[edit] Babelfish French to English
javascript:void(document.location='http://babelfish.altavista.com/babelfish/urltrurl?url='+escape(document.location)+'&lp=fr_en&tt=url')
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Babelfish German to English
javascript:void(document.location='http://babelfish.altavista.com/babelfish/urltrurl?url='+escape(document.location)+'&lp=de_en&tt=url')
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Babelfish Spanish to English
javascript:void(document.location='http://babelfish.altavista.com/babelfish/urltrurl?url='+escape(document.location)+'&lp=es_en&tt=url')
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Babelfish Italian to English
javascript:void(document.location='http://babelfish.altavista.com/babelfish/urltrurl?url='+escape(document.location)+'&lp=it_en&tt=url')
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Babelfish Japanese to English
javascript:void(document.location='http://babelfish.altavista.com/babelfish/urltrurl?url='+escape(document.location)+'&lp=ja_en&tt=url')
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Enhanced User Interface
[edit] Choose style sheet
javascript:if (false)void('Choose style sheet... script (C)1998-2001 Tantek Celik - last modified 2001.09.13');var undefined,i=0;var sheets = ',',options = '<OPTION selected>document default';for (i=0;i<document.styleSheets.length;i++){var s = document.styleSheets[i];var tt = s.owningElement.title;if (tt != '' && tt != undefined){if (sheets.indexOf(','+tt+',')==-1) {sheets += tt+',';options += '<OPTION>'+tt;}}}var ds = '<!DOCTYPE HTML PUBLIC %22-//W3C//DTD HTML 4.0 Transitional//EN%22 %22http://www.w3.org/TR/REC-html40/loose.dtd%22><HTML><HEAD><TITLE>Choose style sheet</TITLE><STYLE>SELECT{width:144px; border:medium solid #339;background:#DDD;font:menu} BODY{overflow:hidden;margin:0;text-align:center;background:#CCC} .h{position:absolute;right:1px;top:1px;width:1em;text-align:right;font:10px Avant Garde,Chicago,Times,Arial,serif;text-decoration:none}</STYLE><SCRIPT>function choosess(tt) { var undefined; var d = window.opener.document; for (i=0; i<d.styleSheets.length; i++) { var s = d.styleSheets[i]; var ti=s.owningElement.title; if (ti!=\'\' && ti!=undefined && ti!=tt) s.disabled = true; else s.disabled=false; }}</SCRIPT></HEAD><BODY><CENTER>';ds += '<BR><SELECT ID=S1 SIZE=4 ONKEYPRESS=\'var k = event.keyCode; if (k==13 || k==3 || k==27) { window.close();}; \' ONCHANGE=\'if (this.selectedIndex!=-1) choosess(this.options[this.selectedIndex].text);\'>'+options+'</SELECT><BR>';ds += '<a href=\'http://favelets.com/\' target=help class=h>@</a><br>';ds += '</CENTER></BODY></HTML> ';var w = window.open('about:blank','ChooseStyleSheet','height=90,width=164');w.document.write(ds);w.document.close();w.focus();w.document.getElementById('S1').focus();void(19981023);
- From
- http://tantek.com/favelets/
- License
- CC 2.0 by license: http://creativecommons.org/licenses/by/2.0
[edit] Pixy.cz
http://www.pixy.cz/pixylophone/favelets/ (Also includes many bookmarklets from created by others)
- Checking the Code
- LynxView of the document
- Simple Dom inspector of the document
- Styles and Stylesheets
- List computed (cascaded) styles - old and new version
- Page Design
- Set background to white
- Clear background
- Page Info
- View HTPP (sic) headers
- View HTPP transaction
- View passwords on the page (by Jakub Vrana)
- Browser Window
- Resize to full screen
- Create comparing windows (vertical) - i.e. tile two windows
- Create comparing windows (horizontal) - i.e. tile two windows
[edit] Liorean.web-graphics.com
- http://liorean.web-graphics.com/
- ViewStyles
- ViewScripts
- SwitchStyles
- GraphicsInfo
[edit] Sam-i-am.com
- http://sam-i-am.com/work/bookmarklets/dev_debugging.html
- View Source - replacement for the browser view-source command
- Send as Text - similar, but slightly more so (uses a server at sam-i-am.com)
- Show Tables - turns on table borders (uses a server at sam-i-am.com)
- Zoom In - IE only
- Zoom Out - IE only
- Element Ancestry - makes everything bring up a dialog listing it's parents
- View DOM
- View DOM Fragment
- Echo Form
[edit] Page Title & Url
javascript: void(prompt('link to this page',document.title + '\n' + location.href));
- Description
- Throws a prompt with the current page's title and url, selected for quick copying. Hit escape or return/enter to dismiss the prompt. I find this handy for quickly dropping a url into an email, or compiling a list of pages. compatible: tested in win32, mac NN3+, win32 IE4+; Mac ie5
- From
- http://sam-i-am.com/work/bookmarklets/misc.html
[edit] Create Link
javascript: void(prompt('link to this page',unescape('%3Ca href=%22') + location.href + unescape('%22%3e') + document.title + unescape('%3c/a%3e')));
- Description
- In the same vein as Page Title & Url, this throws a prompt with the current page's title and url - formatted as a link (<a href="url">title</a>), selected for quick copying. Hit escape or return/enter to dismiss the prompt. compatible: tested in win32, mac NN3+, win32 IE4+; Mac ie5
- From
- http://sam-i-am.com/work/bookmarklets/misc.html
[edit] Samrod.com
- Web Search Engines
- Yahoo!
- First.gov
- Images
- Google Images
- Getty Images
- Financial
- Basic Quote
- Detailed Quote
- Business.com
- Currency - convert currencies with Bloomberg.com
- Shopping
- Amazon.com
- Buy.com
- Shop Yahoo!
- PriceWatch
- PriceGrabber
- PCPhotoReview
- Software
- VersionTracker
- WindowsTracker
- Shipping
- UPS
- FedEx
- USPS
- DHL
- Reference
- Google Maps
- Dictionary - dictionary.com
- Thesaurus - thesaurus.com
- to French -altavista's babelfish
- to Spanish -altavista's babelfish
- to German -altavista's babelfish
- to Italian -altavista's babelfish
- ChemFinder - reg req.
- Entertainment
- Movies & TV - IMDB
- Cast & Crew - IMDB
- Musicians - Gracenote CDDB
- Albums - Gracenote CDDB
- Songs - Gracenote CDDB
- Legal Research
- U.S. Constitution
- U.S. Codes
- RegisterClub - register domains? seems to be broken as of Sat Apr 30 15:53:07 2005
- TradeMark Search - US registered trademarks
- Patent Search - US Patent office
- CalBAR Search - california lawyers
- Whois
- Web Development
- Document Info - like the browser window of the same name
- Forms - pulls the forms out of the current page and lets you hack on them
- Images - shows all images in a list including their dimensions
- Find All - highlight search
- Images 2a
- Cookie - displays cookie info
- Query String
- Browser Info
- Links
- Referrer
- Last Modified
- Whois - of current domain
- Validate - from w3c
[edit] Smokinggun.com
[edit] Printer
javascript:void(d=document);void(el=d.getElementsByTagName('a'));out='';for(i=0;i<el.length;i++){void(t = el[i].href.toLowerCase()); if(t.indexOf('print') > -1 && t.indexOf('edition') < 0) {void(document.location=el[i].href)}};
- Description
- Tries to find the the printer version of an article. Tested on: NY Times, Salon, Washington Post, LA Times, The Guardian, The Economist(May not work in all areas of the site.), SF Gate, and The New Yorker.
- From
- http://www.smokinggun.com/code/bookmarklets.php
[edit] Links Only v1.2
javascript:void(d=document);void(el=d.getElementsByTagName('a'));out='';for(i=0;i<el.length;i++){void(out=out+'<a href='+el[i].href+'>'+el[i].innerHTML+'</a><br><br>\r\r')};d.outerHTML=el.length+' link on the page<br><br>'+out;
- Description
- Shows only the links on a page. Includes a count of all the links.
- From
- http://www.smokinggun.com/code/bookmarklets.php
[edit] Clean Read
javascript:void(d=document);void(el=d.getElementsByTagName('p'));out='';for(i=0;i<el.length;i++){void(out=out+'<p>'+el[i].innerHTML+'</p>\r\r')};d.innerHTML=out;
- Description
- Removes non article text from news sites like CNN, NYTimes, Washington Post and News.com. The will not work on all pages
- From
- http://www.smokinggun.com/code/bookmarklets.php
[edit] Clean Read v1.2gh
javascript:void(d=document);void(el=d.getElementsByTagName('p'));out='';for(i=0;i<el.length;i++){void(out=out+'<p>'+el[i].innerHTML+'</p>\r\r')};d.innerHTML=out;'<table width=400><tr><td>'+out+'</td></tr></table>';
- Description
- Removes non article text from news sites like CNN, NYTimes, Washington Post and News.com. The will not work on all pages. Also sets the column width to 400 pixels. Thanks to Ben Winslow rain @ bluecherry o net for sending in a Mozilla compatible version.
- From
- http://www.smokinggun.com/code/bookmarklets.php
[edit] Zap v1.1
javascript:void(d=document);void(el=d.getElementsByTagName('iframe'));for(i=0;i<el.length;i++){void(el[i].style.display='none')};void(el=d.getElementsByTagName('img'));for(i=0;i<el.length;i++){void(el[i].style.display='none')};void(el=d.getElementsByTagName('a'));for(i=0;i<el.length;i++){void(el[i].style.textDecoration='none');}
- Description
- Removes underlines from links, images, iframes(these usually hold rich media ads).
- From
- http://www.smokinggun.com/code/bookmarklets.php
[edit] PDF
javascript:void(d=document);void(el=d.getElementsByTagName('a'));out='';function go(u){d.location=u};a = new Array();for(i=0;i<el.length;i++){void(t = el[i].href.toLowerCase());if(t.indexOf('.pdf') > -1 && t.indexOf('javascript:') < 0) {void(a[a.length]=el[i].href);void(out=out+'<a href='+el[i].href+'>'+el[i].innerHTML+'</a> | <span style=\'color:#999999\'>'+el[i].href+'</span><br><br>\r\r')}};if (a.length == 0) alert('No PDFs Found');if (a.length == 1) go(a[0]);if (a.length > 1) d.innerHTML = out;
- Description
- Goes to a PDF file on a page, or will create a list of links to PDF's if more than one is on the page.
- From
- http://www.smokinggun.com/code/bookmarklets.php
[edit] Subsimple.com
- http://subsimple.com/bookmarklets/collection_layout.asp
- Clear Ads
- Clear Geocities
- Clear IntelliTxt
- Clear Trails
- Clear Layers
- Allow Right-click
- Drop-down to List
- List to Drop-down
- Bigger Text Areas
- Resizable Frames
- Clear - combines Clear Ads, Clear Geocities, Clear IntelliTxt, Clear Trails, Allow Right-click
- http://subsimple.com/bookmarklets/collection_links.asp
- List All Links
- List E-mail Links
- Links to New - window
- Open as URL
- Find Specific URLs
- Show Links Dest.
- Show Domains
- Domains to Clipboard
- http://subsimple.com/bookmarklets/collection_navigation.asp
- Page Last Modified
- Leave Frameset
- Continuous Reload
- Continuous Reload (Show Time)
- Reload Images
- http://subsimple.com/bookmarklets/collection_debugging.asp
- Read Global Variable
- DOM Browser
- Script Debugger
- Script Debugger Advanced
- http://subsimple.com/bookmarklets/collection_developer.asp
- ASCII Table
- List Frames
- List Comments
- Table Borders
- Form Borders
- Form Info
- List Embedded Objects
- Execute HTML
- HTML Tree
- Generate HTML Table
- Resize to...
- List Fonts Used
- Add Stylesheet...
- http://subsimple.com/bookmarklets/collection_search.asp
- Hilite Text
- Search Google
- Search Dictionary.com
- Translate Selection
- Translate Page
- Wikipedia Lookup
- Validate Page (Hitbox)
- http://subsimple.com/bookmarklets/collection_experimental.asp
- Replace Banner Ads
- True Mirror Site
- Am I Drunk Yet?
- Am I Stoned?
- Tile Background
- http://subsimple.com/bookmarklets/collection_activex.asp
- Tables to Excel
- Excel Colors
- Page to Word
- List Root Folders
- List Printers
- Run Calc
[edit] User:JesseW
[edit] hrefs and name as link text
javascript:(function(){var i,c,x,h; for(i=0;x=document.links[i];++i) { h=x.getAttribute(%22href%22)+%22QBREAKQ%22; x.title+=%22 %22 + x.innerHTML; x.appendChild(document.createTextNode(h)); } })()
- Description
- Allows copying of name and href more easily. It marks the end of the href with the text "QBREAKQ" for easy spliting.
- From
- http://en.wikipedia.org/wiki/User:JesseW (based on one from squarefree)
[edit] Philburns.com
[edit] Navigation
[edit] Open all Links in New Windows
javascript:void(thislinks=document.links);for(linklen=0;linklen<thislinks.length;linklen++){thislinks[linklen]=open(thislinks[linklen].toString(),'','scrollbars,location,toolbar,status,menubar,resizable');void(window.focus())}
- Description
- Opens all the links on the page in new windows and sends them to the background
- From
- http://www.philburns.com/bookmarklets.html
[edit] Open Previous in New Window
javascript:void(str=window.history.previous);if(str){open(href=str,'','scrollbars,location,toolbar,status,menubar,resizable')}else{alert('There is no Previous Window......... Doh!')};void(null)
- Description
- Only works if the Previous is in the same domain
- From
- http://www.philburns.com/bookmarklets.html
[edit] Open Next in New Window
javascript:void(str=window.history.next);if(str){open(href=str,'','scrollbars,location,toolbar,status,menubar,resizable')}else{alert('There is no next Window......... Doh!')};void(null)
- Description
- Only works if the Next is in the same domain
- From
- http://www.philburns.com/bookmarklets.html
[edit] Searching
[edit] Search this Domain.
javascript:void(str=prompt('String to search for at '+document.domain,''));if(str){void(location=('http://www.google.com/search?as_q='+str+'&as_sitesearch='+document.domain));}
- Description
- Very cool. Promts for a string, then does a Google advanced search in current domain.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Search ODP in Background
javascript:void(str=prompt('Search for:','Foobar'));if(str){void(t3Wc6J2N=open('http://207.200.81.135/cgi-bin/search?search='+escape(str).split('%20').join('+'),'','scrollbars,location,toolbar,status,menubar,resizable'));}(t3Wc6J2N.blur());
- Description
- from - Phil Burns.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Search Hotbot (New Window)
javascript:void(str=prompt('Search for:','Foobar'));if(str){void(open('http://www.hotbot.lycos.com/?MT='+escape(str).split('%20').join('+'),'','scrollbars,location,toolbar,status,menubar,resizable'));}
- Description
- from - Rijk Van Geijtenbeek.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Links To this Page - AltaVista
javascript:location.href='http://www.altavista.com/cgi-bin/query?q=link:' + document.location.href;
- Description
- from - Rijk van Geijtenbeek.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Search for current page in www.archive.org
javascript:location.href='http://web.archive.org/archive_request_ng?collection=web&url='+document.location.href+'&Submit=Take+Me+Back%21';
- Description
- from - Tobias Boyd.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Search google groups (New window)
javascript:void(str=prompt('Google Groups Search:',''));if(str){void(open('http://groups.google.com/groups?as_q='+str+'&lr=lang_en&num=50&as_scoring=d&hl=en'));}
- Description
- from - An opera.general poster I think
- From
- http://www.philburns.com/bookmarklets.html
[edit] Checking Code Validity
[edit] Validate at WDG
javascript:location.href='http://www.htmlhelp.com/cgi-bin/validate.cgi?url=' + document.location.href;
- Description
- from - Rijk van Geijtenbeek.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Validate HTML at W3C
javascript:location.href='http://validator.w3.org/check?uri=' + document.location.href + '&doctype=Inline';
- Description
- from - Rijk van Geijtenbeek.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Validate HTML at W3C (In Background)
javascript:void(str='http://validator.w3.org/check?uri=' + document.location.href);if(str){abc123=open(href=str,'','scrollbars,resizable');}(abc123.blur());
- Description
- from - Me :).
- From
- http://www.philburns.com/bookmarklets.html
[edit] Validate all frames HTML W3C
javascript:if(frames.length>0){for (i=0;i<frames.length;i++){fR=frames[i];void(window.open('http://validator.w3.org/check?uri=' + fR.document.location.href +'&doctype=Inline','','scrollbars,resizable'))}}else{alert('No frames!')}
- Description
- from - Me.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Validate CSS for page at W3Cjavascript:
javascript:location.href='http://jigsaw.w3.org/css-validator/validator?uri=' + document.location.href;
- Description
- from - Phil Burns. Finally my own one :)
- From
- http://www.philburns.com/bookmarklets.html
[edit] Validate CSS for page at W3C (In Background)
javascript:void(str='http://jigsaw.w3.org/css-validator/validator?uri=' + document.location.href);if(str){abc123=open(href=str,'','scrollbars,resizable');}(abc123.blur());
- Description
- from - Phil Burns. Another :)
- From
- http://www.philburns.com/bookmarklets.html
[edit] Validate all frames CSS W3C
javascript:if(frames.length>0){for (i=0;i<frames.length;i++){fR=frames[i];void(window.open('http://jigsaw.w3.org/css-validator/validator?uri=' + fR.document.location.href,fR.name+i,'','scrollbars,resizable'))}}else{alert('No frames!')}
- Description
- from - Me.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Validate HTML & CSS at W3C (In Background)
javascript:void(str='http://jigsaw.w3.org/css-validator/validator?uri=' + document.location.href);if(str){abc123=open(href=str,'','scrollbars,resizable');}abc123.blur();(str='http://validator.w3.org/check?uri=' + document.location.href + '&doctype=Inline');if(str){abc123=open(href=str,'','scrollbars,resizable');}abc123.blur();
- Description
- Opens two windows from - Phil Burns. Another :)
- From
- http://www.philburns.com/bookmarklets.html
[edit] Page Data
[edit] Document Info
javascript:Wn7zG3=open('','Z6','width=400,height=400,scrollbars,resizable,menubar'); with(Wn7zG3.document){write('<basetarget=_blank>');{write('<h4>URL</h4><ahref="',document.URL,'">',document.URL,'<h4>Hostname</h4>',document.location.hostname);};write('<h4>Frame URLs</h4>');var pw=parent;var i = 0;while (i<pw.length){aXz=pw.frames[i++].location;write('<a HREF="',aXz,'">',aXz,'</a><br>');};{write('<h4>Document last modified</h4>',document.lastModified,'<h4>Referrer</h4>',document.referrer,'<h4>Cookie</h4>',document.cookie,'<h4>Hash</h4>',document.location.hash,'<h4>Links</h4>');};var i =0;while(i<document.links.length){aXz=document.links[i++].href;write('<a HREF="',aXz,'">',aXz,'</a><br>');};{write('<h4>Images</h4>');};var i =0;while(i<document.images.length){aXz=document.images[i++].src; write('<a HREF="',aXz,'">',aXz,'</a><br>');};void(close())}
- Description
- Very nice... shows URL, hostname, the URLs of all frames (clickable), modification date, referrer, hash (both if provided only), lists all links and all images (both clickable), all in a new popup window. By - Roland Reck.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Document Info 2
javascript:void(thiswin=top);void(siteinfo=window.open('','Z6','width=400,height=300,scrollbars,resizable,menubar'));with(siteinfo.document){open();write('<html><head><base target=_blank><title>Information</title></head><body>');write('<h4>URL</h4><a href="',thiswin.document.URL,'">',thiswin.document.URL,'</a><h4>Hostname</h4>',thiswin.document.location.hostname); write('<h4>Frame URLs</h4>'); var pw=thiswin.parent;var i = 0;while (i <pw.length) {aXz=pw.frames[i++].location; write('<a href="',aXz,'">',aXz,'</a><br />');}; {write('<h4>Last modified</h4>',thiswin.document.lastModified,'<h4>Referrer</h4>',thiswin.document.referrer,'<h4>Cookie</h4>',thiswin.document.cookie,'<h4>Hash</h4>',thiswin.document.location.hash,'<h4>Links</h4>');};var i = 0;while(i<thiswin.document.links.length) {aXz=thiswin.document.links[i++].href;write('<a href="',aXz,'">',aXz,'</a><br />');};{write('<h4>Bilder</h4>');}; var i =0;while(i<thiswin.document.images.length){aXz=thiswin.document.images[i++].src; write('<a href="',aXz,'">',aXz,'</a><br />');};void(close())}
- Description
- Similar to the above but re-written by Roland for Opera 7
- From
- http://www.philburns.com/bookmarklets.html
[edit] Check Document Last Modified
javascript:if (document.lastModified==0) {alert('Date not available!');} else {alert('This document has been modified on: ' + document.lastModified); }
- Description
- from - Maurizio Berti & Rijk van Geijtenbeek.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Window widgets
[edit] Resize Window to 1024 x 768
javascript:window.resizeTo(1024,768);window.moveTo(0,0);
- Description
- Me.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Resize Window to 800 x 600
javascript:window.resizeTo(800,600);window.moveTo(0,0);
- Description
- Me.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Resize Window to 640 x 480
javascript:window.resizeTo(640,480);window.moveTo(0,0);
- Description
- Me.
- From
- http://www.philburns.com/bookmarklets.html
[edit] Miscellaneous
[edit] Google Translate (English)
javascript:q=location.href;if(q)location.href='http://translate.google.com/translate_c?hl=en&u='+escape(q)
- Description
- from - Partially Correct
- From
- http://www.philburns.com/bookmarklets.html
[edit] Show All Images in New Window
javascript:Ai7Mg6P='';for (i7M1bQz=0;i7M1bQz<document.images.length;i7M1bQz++){Ai7Mg6P+='<img src='+document.images[i7M1bQz].src+'><br>'};if(Ai7Mg6P!=''){fg=window.open();with(fg.document){write('<center>'+Ai7Mg6P+'</center>')};void(document.close())}else{alert('No images!')}
- Description
- - Modified from bookmarklets.com
- From
- http://www.philburns.com/bookmarklets.html
[edit] PAS Complaint
javascript:eMlA='';for(iB2M=0;iB2M<document.links.length;iB2M++){if(document.links[iB2M].protocol=='mailto:'){Ju59=document.links[iB2M].toString();eMlA+=Ju59.substring(7,Ju59.length)+','}};if(eMlA!=''){javascript:location.href='mailto:'+eMlA+'?SUBJECT=Invalid Code at '+document.title+' - '+location.href+'&BODY=The code on your webpage is not rendering well in my browser. For details please see http://www.htmlhelp.com/cgi-bin/validate.cgi?url='+escape(location.href)}else{alert('No mailto links on page!')}
- Description
- - Send a complaint about a webpages code to all mailto links on a page ;-) from - Me
- From
- http://www.philburns.com/bookmarklets.html