質問
Safari 拡張機能を作成する最良の方法は何ですか?私は Firefox 用にいくつかの XUL 拡張機能を作成しましたが、今度はそれらのバージョンを Safari 用に作成したいと思います。入力マネージャーやサービス メニューではできないため、ブラウザ UI にボタンやフォームを追加できる方法はありますか?
解決
Safari 5.0 のリリースに伴い、Apple は開発者が使用できる新しい拡張フレームワークをリリースしました。機能的には、JavaScript と HTML 5 を使用してボタン、ツールバー、コンテキスト メニュー、インジェクションをカスタマイズできる Firefox 拡張フレームワークに似ています。
詳細については、このリンクをご覧ください
他のヒント
Safari プラグインの開発は簡単ではありません。インターフェイスは Objective-C で書かれており、そのほとんどは WebKit の一部ですらない (したがってソースを見ることはできません) が、実行中のアプリケーションのオブジェクト階層を検査してパッチを適用するための機構があります。Cocoa と Objective-C の理解が必要ですが、それ以上の理解は必要ありません。
これは、プロセスのブックマークにあった高レベルの概要です http://livingcode.org/2006/tab-dumping-in-safari. 。動作する (おそらく古い) コードを使用して Python を使用して Safari プラグインを作成する方法について説明します。Python の代わりに、Objective-C バインディングを持つものであれば何でも使用できます。
これには 2 つの主要な部分があります。
実行中の Safari にコードをアタッチする必要があります。これは通常 SIMBL で行われます http://www.culator.net/software/SIMBL/SIMBL.php.
内部に入ったら、何をパッチするかを考える必要があります。Cocoa アプリケーションを元に戻すチュートリアルがあります http://www.culater.net/wiki/moin.cgi/CocoaReverseEngineering, 、最も重要なツールである class-dump にリンクします。 http://www.codethecode.com/projects/class-dump/ (wikiのリンクが壊れています)。クラスダンプは、Safari のクラスの完全な階層を提供し、具体的に何をパッチする必要があるかを名前から推測できます。これは非常に試行錯誤のモードです。
上記のリンクを読むと、プロジェクトの範囲がわかります。
最近状況が変わりました。Apple は、Safari 5 の一部として拡張 API を利用できるようになりました。詳細については、 アップルのサイト そしてによって Safari 開発者プログラムに参加する.
Safari の拡張機能にはデジタル署名が必要ですが、署名証明書は Apple から無料で入手できます。これは、Apple が Safari を更新するたびに機能しなくなる可能性があるハッキングに頼ることなく、拡張機能を Safari に組み込むための正当な方法です。
Safari が実際に真のプラグインをサポートしているという事実については誰も言及していないようですが、入力マネージャーのハッキングでは間違いなくサポートされていません。
「WebKit プラグイン プログラミングのトピック」 http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/
このようにして、PDF や Flash コンテンツのサポートなどが実装されます。あなたの内側を覗いてみましょう /Library/Internet Plug-ins/
例を参照するにはディレクトリを参照してください。
もちろん、固有の制限があり、UI の変更に関しては期待どおりに達成できない場合があります。Safari プラグインは、Input Manager のハッキングができるすべてのことを実行できるわけではありませんが、WebKit ではどこでも、また OS の将来のバージョンでも動作します。 注記: Snow Leopard では Safari はデフォルトで 64 ビットであるため、入力マネージャーは機能しません。行方不明です サファリの広告ブロック すでに...:-( 本物のプラグインとして書き直されるのをぜひ見てみたいです。
入力マネージャーやサービス メニューではできないため、ブラウザ UI にボタンやフォームを追加できる方法はありますか?
実際、InputManager を使用すると、 するだろう 可能になるでしょう。Safari 拡張機能の一般的な技術である SIMBL は、InputManagers の単なるラッパーです。これは、InputManagers の略です。 Sマート 私入力 Mアナガー Bだるい Lオーダー。Safari の既存のクラスを拡張するだけで、メニュー バー、ツールバー、ダイアログなどどこにでも要素を追加できます。
とはいえ、æon 氏が言うように、Safari 用の拡張機能を作成するのは簡単ではないだけでなく、完全にサポートされていません。Inquisitor (最近 Yahoo! に買収された) や Google の Gears など、比較的人気のある拡張機能もいくつかありますが、ほとんどの場合、公式にサポートされ広く使用されている技術である Firefox の拡張機能とはまったく異なります。
特別な特典も必ず考慮に入れてください。 Leopard 上の InputManager の制限事項.
また、注意してください - Apple は、InputManager は Leopard の時点では厳しく制限されており、Apple に従って 64 ビット アプリケーションでは実行されないと述べています。 Leopard リリースノート. 。Snow Leopard ではほとんどのアプリケーション (おそらく Safari を含む) が 64 ビットになることを考えると、これは特に興味深いことです。Apple は間違いなく、機能のオーバーライドと拡張へのベクトルとして、InputManager を廃止しようとしています。Safari には拡張メカニズムが切実に必要です。
Safari 拡張機能は Apple の承認を得る必要はありません。開発者証明書 (無料) を取得するだけで作成できますが、配布することはできます。また、Apple が Extension Gallery を作成していますが、そこを通じて配布する必要はありません。ご覧のとおり、今日試すことができる拡張機能がすでにかなりの数あります。証明書は改ざんされていないことを保証するだけです。
既存の拡張機能を見てその動作を確認したい場合は、それをダウンロードするか、Safari 拡張機能フォルダーから取得して、.safariextz を .xar に変更してから、Pacifist で開いたり解凍してコードを表示し、必要に応じて追加します。拡張機能ビルダーアプリ。