小書籤(英語:bookmarklet),又叫書籤小程式,是一種小型的程式,以網址(URL)的形式被存為瀏覽器中的書籤,也可以是網頁上的一個連結。小書籤的英文名,Bookmarklet是由Bookmark和Applet組合而來。無論小書籤以什麼形式儲存,它們都是用來給瀏覽器或是網頁添加一些特定功能的。點選時,小書籤會執行這些操作,包括執行搜尋,匯出資料等等。小書籤一般是JavaScript程式。
歷史
bookmarklets.com的Steve Kangas發明了bookmarklet這個詞[1],之後他在Netscape的JavaScript指南中的某些內容上產生了自己的創意[2]。最早的一個詞語是favelet在2001年9月6日被坦塔克·塞里克所使用。而在Netscape發明JavaScript的布蘭登·艾克這樣說明小書籤的來歷:
“ | 這是一個特意設計的特性:我在1995年發明JavaScript的時候發明了javascript: 這類URL,並打算使得javascript: URLs用法和其他URL一樣,包括收錄入收藏夾。
我特地把"JavaScript:" URL設計得可以在執行時產生一個新文件,例如 |
” |
——布蘭登·艾克,寄給西門·威利森的郵件[3] |
概念
瀏覽器使用隸屬於<a>
標籤的href
的URI標籤來儲存書籤。瀏覽器用URI字首,例如http:
、file:
、或是ftp:
來確定協定以及請求剩餘字串的格式。
瀏覽器也能像執行其它字首一樣執行javascript:
。在內部處理時,當瀏覽器檢查到協定為JavaScript,就將後面的字串作為JavaScript指令碼來執行,並用執行結果產生一個新頁面。
指令碼可以在當前頁面執行,這樣就能參照和修改當前頁面的元素。如果指令碼返回了undenfined類型(而不是字串等),瀏覽器就不會載入新頁面而是直接在當前頁面內容上執行Javascript指令碼。可以用這個方法在不重新整理頁面的情形下修改頁面內容,比如字型/顏色等。
以下的匿名函式可以用來強制指令碼返回undenfined類型:
javascript:(function(){
/* Statements returning a non-undefined type, e.g. assignments */
})();
用途
小書籤的儲存與使用和普通書籤一致。如同它們的名字,小書籤是一種十分易用的工具。例如:
小書籤一般是通過建立一個新書籤並將代碼貼上入URL欄而實現的。現代瀏覽器中也可把連結形式的小書籤直接拖拽到書籤工具列中,此後小書籤就可以像打開普通書籤一樣正常運作了。
以下範例小書籤可以在瀏覽器視窗中以維基為搜尋引擎搜尋選定的文字。正常情況下以下的小書籤可以被安裝在[4]瀏覽器書籤工具列中。選中文字後即可點選這個小書籤以執行搜尋。
javascript:function se (d) {return d.selection ? d.selection.createRange().text : d.getSelection()} s = se (document); for(i=0; i<frames.length && !s; i++)s = se(frames[i].document); if(!s || s=='')s = prompt('輸入維基百科搜尋鍵碼',''); open('http://zh.wikipedia.org' + (s ? '/w/index.php?title=Special:Search&search=' + encodeURIComponent(s): '')).focus();
參見
參考文獻
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.