NinjaKit

NinjaKit*1というChrome/Safari拡張を公開しました。
Chrome:Chrome Web Store - NinjaKit
Safari:NinjaKit for Safari
Source: os0x/NinjaKit · GitHub
これはFirefoxのアドオンであるGreasemonkey相当の機能を実装することを目指しています。
今のところ、

  • GM_xmlhttpRequest
  • GM_addStyle
  • GM_getValue
  • GM_setValue
  • GM_deleteValue(new in ver 0.7)
  • GM_listValues(new in ver 0.7)
  • GM_log
  • GM_openInTab
  • GM_registerMenuCommand(Safari版は未サポート)
  • Metadata
    • @include
    • @exclude
    • @require
    • @bookmarklet(独自APIbookmarkletとして実行するのでGM APIは使えないが、ページ側のJSに触れる)

あたりをサポートしています。とりあえず、AutoPagerizeが動く(AutoPagerize自体は拡張版が出ているのでそっちを使ったほうが良いですが)のを基準にしました。
大体実用的なレベルになったと思うので、公開しました。が、まだまだ問題は色々とあります。特にセキュリティリスクがないとは言い切れない(Greasemonkey自体の問題でもある)のでそのあたりはご了承を。

今後の予定

  • Safari拡張対応
  • E4X(一番重い…、ヒアドキュメントとして使っているだけのケースはなんとか動くようにしたい)
  • スクリプトの更新通知
  • @resource
  • その他細かいAPIなど

対応が難しそうな問題点

  • スクリプト同士の名前空間が完全には別れていないので、prototypeを拡張したときなどにスクリプト同士のコンフリクトが起きかねない
  • letとかIteratorsとかExpression closuresとか、Mozilla方言は無理そう

*1:思いつきでNinjaに。あとSafariにも対応しているのでKitに。