Skip to main content

Wicktionary Bookmarklet

A bookmarklet is defined by Wictionary as "A small piece of JavaScript code stored as a URL within a bookmark". I have been using bookmarklets to make my life easier from a long time.

Some that I use regularly are

  1. [Read Now] : This makes it really easy for me to read pages which are unreadable.
  2. [Google Translate] : Translates pages
  3. [Mobilise This] : Formats the page for mobile viewing by Google.
  4. [Acronym lookup] : This helps me find the meanings for abbreviations.
The links in [] brackets are bookmarklets. Just drag them to your bookmark bar.

I picked these up from these two pages. There is also a whole website dedicated to them bookmarklets.

As a developer, what i like about bookmarklets is that they are coded in JavaScript and i can meddle with them till my heart's content, without worrying about breaking anything.

However, i wanted a bookmarklet that would allow me to look up meaning of words. Wiktionary was my open dictionary of choice. They did have bookmarklets, but I didn't like the way the current page was replaced by the relevant wiktionary entry. Also i didn't know what was going on inside the bookmarklet. So i wanted to (a). know what was going on? ,and (b). open the wiktionary entry in a new page.

The code of the official wiktionary bookmarklet was taken and then made into a human readable form.

javascript:(function(){
q=window.getSelection().toString();
if(!q)q=prompt('Wiktionary:');
if(q)location.href='http://en.wiktionary.org/w/wiki.phtml?search='+encodeURI(q);
})()

The first line defines that the string is a bit of javascript code. The way the function is defined; it is called an anonymous function. This is to ensure that the function does not return an undefined value ( discussed here ).

In the second line, the selected text is added as the value of a variable q after making it into a string (.toString()). The 3rd line asks us which word we want the meaning for (prompt('Wiktionary:')) if no text has been selected (if(!q)).

The 4th line: Since now the text has been selected (or entered). The relevant webpage is opened.

After doing some googling, i came up with this page that explained how the Window.open function worked just the way i wanted it to. So I changed the 4th line and my final code was:

javascript:(function(){
Q=window.getSelection().toString();
if(!Q){Q=prompt('Wiktionary:')}
if(Q){window.open('http://en.wiktionary.org/w/wiki.phtml?search='+encodeURI(Q)+'')}
})()

The website minifyjavascript.com runs a javascript minifying service. Using this I minified my code and now, proudly present the [Wiktionary] bookmarklet, featuring opening the meaning of the selected (or entered) word using wiktionary in a new browser window. Do drag away to the (bookmark) bar and use for your pleasure.

Comments

  1. Hi Trs,
    Well written article. This was a very interesting concept. Im hoping to modify ur bookmarklet and experiment with it.. definitely made browsing the net easier.. :)

    ReplyDelete
    Replies
    1. Thanks a lot dude.

      For starters, Do try looking at coding a bookmarklet for http://www.indiabookstore.net . it compares book prices including flipkart which both junglee and google dont do (a real chore, doing that). That would be really nice.

      Delete

Post a Comment

Popular posts from this blog

a keeper from kiterunner

today was watching kiterunner. awesome movie. it was this dialog that hit me hard - "Now, no matter what the mullah teaches, there is only one sin, only one. And that is theft. Every other sin is a variation of theft... When you kill a man, you steal a life. You steal his wife's right to a husband, rob his children of a father. When you tell a lie, you steal someone's right to the truth. When you cheat, you steal the right to fairness... There is no act more wretched than stealing, Amir."

In the right direction, perhaps ?

i've been toying around with a PHP framework called symfony . actually i wanted to know what MVC ( Model-View-Controller ) was, and i am really comfortable with PHP, so downloaded a copy and made a sandbox on my xampp htdocs directory. after i started playing around it just hit me that how much programming has simplified over the 12 years since i wrote my "hello world" program in c. where 150 people were needed to code a simple website back then, that too in about a year, now things can be done with just one or two programmers in about a fortnight. i think thats awesome. computers are finally doing what they were invented to do - to reduce human work. one really interesting thing is the askeet tutorial. here they guide you through making a replica of their site over 24 days, with each tutorial taking not more than one and a half hours to completely understand and implement. Also the symfony site itself is created on symfony, and that's really cool. ok, what hit me