什么是 bookmarklet
Bookmarklet是一个复合词,由Bookmark(书签)和-let(小的)构成,中文可以译成"书签工具"。
它在形式上与"书签"一样,都保存在浏览器收藏夹里。但是,它不是一个以"http://"开头的网址,而是一段Javascript代码,以"javascript:"开头。点击之后,会对当前页面执行某种操作。
bookmarklet 的编写规则
- 必须以"javascript:"开头
- 所有代码必须在同一行,网址是有长度限制的。IE的最长网址不能超过2083个字符(IE6不能超过508个字符)
- 使用单引号,根据Javascript的语法,单引号('xxx')和双引号("xxx")都能使用。但是由于html语言主要使用双引号,所以Bookmarklet优先使用单引号。万一遇到必须使用双引号的情况,就采用它的URL编码形式"%22"。
- 不要污染全局变量,Bookmarklet最好不要生成新的全局变量,可以采用直接运行匿名函数的方式
- 对文本和URL进行编码,为了防止出现非法字符,代码以外的文本都应该使用encodeURIComponent()函数进行编码,比如把空格变成%20。
防止刷新页面
如果代码对页面有改动(比如使用了document.write),浏览器就会用一个新页面替换原有页面。所以最好用void()命令,把语句放在里面。
举例来说,下面这个Bookmarklet会导致原页面被一个新页面替代:
javascript:document.links[0].href='http://www.ibm.com/';
1
加上void以后,页面就不会跳转了:
javascript:void(document.links[0].href='http://www.ibm.com/');
1
常用
修改指定输入框的值(免输密码,有的输入框不允许记住账号密码)
javascript:void(document.getElementById('password').value='password')
1
因为对页面有改动,所以需要 void 包裹,不然界面直接变成 password 文本。
在登录界面,点一下这个收藏项就行了。
输入密码并登录
javascript:function login(){document.getElementById('password').value='password';document.getElementById('loginButton').click();};login();void(0)