製作 bookmarklet 有個問題是,怎麼把寫好的 JavaScript 縮成一行?這方面網路上有個 Bookmarklet Builder 看來不錯,像是將「%20」轉成空白這樣的功能也有準備。

而我目前的作法,是拷貝 PSPad 的擴充 script PSPadJSMin 並稍作修改(原本是用來壓縮 JavaScript 的),以後在 PSPad 下就可以「寫 JavaScript → 按熱鍵壓成 bookmarklet → 複製、貼上網址列測試」——也還算方便。

因為只有小改,故不好意思提供下載,僅列改法:

  1. 先去官網PSPadJSMin.zip ……解開放進 PSPad 的 Script/JScript 資料夾。
  2. 直接複製 PSPadJSMin.js 並改名為 PSPadJSMin_bookmarklet.js
  3. 編輯 PSPadJSMin_bookmarklet.js 內容:
    • function JSMin() 改名為 function JSMinBookmarklet()
      其實愛改什麼名字都行,只要前後對應別弄錯即可。
    • function jsmin(input, level) 底部的:
      return ret;
      改為
      return 'javascript:(function(){' + ret.replace(/\n/g,'').replace(/([\s\"])/g, function(s,p){return encodeURI(p);}) + '})();';
      這樣會把 JSMin 壓的東西縮成一行,對空白、引號做個 encodeURI,最後包成 javascript:(function(){高濃縮原始碼})(); 的樣子。
    • function Init() 內部的:
      addMenuItem("JSMin", "", "JSMin", "Ctrl+Shift+J");
      改為
      addMenuItem("bookmarklet", "", "JSMinBookmarklet", "Ctrl+Alt+B");
      這樣會在 PSPad 工具列的 Scripts 選單加上 bookmarklet 項目,並綁上熱鍵。
  4. 執行 PSPad 工具列的 Script → 重新編譯 Scripts
    這邊我是有先重開 PSPad,否則似乎不會成功。