Ugly Variables and Encapsulation
In order to minimize that risk that a bookmarklet variable will collide with a variable already on the page (that is, will overwrite or reset a global variable that was set by the page author), it's wise to use variable names that are "ugly". The ugly variable is a a random string of upper- and lowercase letters and numbers. (e.g. - c39Yt2U). There are 62 symbols that can be used in such a string.
You can calculate the probability of collision between two randomly chosen ugly variables of the same length (a lower probability meaning a safer bookmarklet). If only one ugly variable is used then the probability is just 1 divided by the number of possibilities - as given in the table below.
We see that ugly variables of length 6 and above are extremely unlikely to collide with such a variable on another page; there are fewer than 1,000,000,000 pages currently on the web (according to some estimates for 1999.)
You can sometimes encapsulate the script of a bookmarklet within a function and thereby reduce the number of global variables used to one.
To do this for the 4.0 browsers, wrap a function around the script. That is,
For example, here is one way to write a bookmarklet which asks for some text and then alerts it back:
As it stands, this bookmarklet is using two (ugly) variables (V1 and V2). We can reduce the number of variables to one by rewriting the script in the following way:
The variables A and B are scoped to the function x(), and x() is scoped to the ugly object V1.
If you are using many small variables in a bookmarklet you may be able to improve it by encapsulating it this way.