NinjaKit ver0.7

Safari5.0.1に更新したらスクリプトをインストールできなくなっていた(拡張のパスが微妙に変わっていた)ので修正しました。
あと、ついでなのでGM_listValues、GM_deleteValueに対応しつつ、Safari版とChrome版を完全にマージしてバージョンも揃えました。
他にも直さないといけないところは色々ありますが、追々ということで…。(他の拡張も色々溜まってる…、そういえばSafariのギャラリーにも登録してなかった。)
NinjaKit - 0xFF

NinjaKit for Safari

NinjaKitのSafari版が一応できました。
NinjaKit - 0xFFからどうぞ。
注意点などはChrome版と同じです。ただ、GM_registerMenuCommand未対応なのと、オプションページを呼び出す方法がツールバーのボタンしかありません。このあたり、Safari版は右クリックメニューにしてみようかなと考えています(というか、今のところそれくらいしか候補がないので)。
とりあえず、手前ですがos0x's scripts - Userscripts.orgは動くと思います。

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に。