Webページのjavascriptオブジェクトとして公開されるXPCOMコンポーネントを作成したいと思います。 Google Gearsのようなものが私が探しているものです。つまり、Google Gears Firefox拡張機能をインストールした後、javascriptオブジェクト 'google.gears'は、それを使用するすべてのWebページで使用できます。私は、XPCOM開発について多くのmozillaドキュメントを見出しましたが、コンポーネントをWebページで実行されているjavascriptに公開することは何もありませんでした。これはXPCOMで可能ですか?拡張機能の代わりにFirefoxプラグインを記述する必要はありますか?WebページのjavascriptにXPCOMコンポーネントを公開する
答えて
Firefox 4の新しいAPIであるnsiDOMGlobalPropertyInitializerを使って、すべてのウィンドウに遅延接続するJSオブジェクトを作成できます。 Firefox 4の新しいWebコンソールが作成される方法です。 CIに
https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.js SO基本的には、QI:ここ
QueryInterface: XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer]),
は拡張子で完全な実装の一例です:
はあなたのコンポーネントで、次のQIプロパティを持っている必要があります.nsIDGlobalPropertyInitializerの場合、マニフェストに次のような行があることを確認してください。
category JavaScript-global-property crypt @droplettr.com/domcrypt;1
参照:https://github.com/daviddahl/domcrypt/blob/master/extension/domcrypt/components/domcrypt.manifest
This articleは有望と思われる:
(Webページなど)一般的に言って、信頼できないコンテンツ がそれらを作成 含むほとんどのXPCOMコンポーネント、と何も を行うことはできません。もちろん、このポリシーには の例外があります。たとえばDOM オブジェクトは、公に使用するために インターフェイスが明確に定義された XPCOMコンポーネントです。ただし、Web ページでコンポーネントを使用するには、 メソッドまたは プロパティを呼び出すことが必要です。コンポーネントには、 が許可されていないものと明示的にMozillaに通知する必要があります( )。 nsISecurityCheckedComponentインターフェイス は、それがどのように行われるかを定義します。
出典:http://weblogs.mozillazine.org/weirdal/archives/017211.html
それはなんとかですが、あなたは、プロキシにXPCOMコンポーネントへの呼び出しを持つことになります。それはおそらくかなり危険なことにも留意してください。
クロムオブジェクトをコンテンツコードに公開する方法については、私の回答hereを参照してください。
旧式の3.x方法は、コンポーネントを「JavaScriptグローバルプロパティ」カテゴリに登録することです。 (これは4.xでも動作しますが、カテゴリ名にはスペースが含まれなくなったので、代わりに "JavaScript-global-property"カテゴリを使用する必要があります)。オブジェクトにはnsIClassInfoインターフェイスを実装する必要があります。コンテンツに公開したいあなたがあなたのオブジェクトにアクセスしているコンテンツスクリプトを知る方法がないので、あまり役に立ちません。
あなたがウェブの拡張機能でこれを行うことができ、私が読んでいると、もはやサポート
- 1. 私のWebページにFacebookのグループフォトギャラリーを公開する
- 2. XPCOMコンポーネントからFirefoxキャッシュにアクセスする
- 3. XPJS(Javascript XPCOM)ドキュメント?
- 4. Windows認証Webアプリケーションから1ページを公開するには?
- 5. コンポーネントを公開してもページは公開されませんか?
- 6. Visual Studio Web Deployment - "公開中にプリコンパイル"にプロファイルを公開する
- 7. モデルデータをコンポーネントに公開する
- 8. プロファイルを公開せずにWebサイトを公開する方法
- 9. node.jsで静的なWebページを公開するherokuのhttp-server
- 10. vs compress jsを使用してWebページを公開する
- 11. サービスファブリックにWeb APIを公開
- 12. Webサービスを公開するには?
- 13. Web上にFilemakerデータベースを公開する
- 14. Webアプリケーションを公開するには
- 15. ASP.NET - WebサイトをIISに公開する
- 16. Webサービスを公開するには
- 17. WebサイトをRubyサーバに公開する
- 18. AzureにFlask Web Appを公開する
- 19. Bowerコンポーネントを公開するベストプラクティス
- 20. RSSフィードをページに公開する
- 21. Crystal ReportsをColdFusionページに公開する
- 22. REST Webサービス用のindex.jspページの代わりにjavadocを公開する方法
- 23. Web Storeで公開
- 24. 公開ASP.NET Webサイト
- 25. ページ上のコンポーネントで使用されているpdfの公開を解除すると、そのページが未公開になっていますか?
- 26. SOAP Webサービス:WSDLの公開ページが必要ですか?
- 27. MOSS公開ページとWSSページ
- 28. Webアプリケーションをazureに公開中のエラー
- 29. WCF公開Webサービスのセキュリティ
- 30. 公開ajaxのWebサイト
を持つことになりますマニフェスト行は常に ''カテゴリーJavaScriptのグローバル・プロパティ{プロパティ名} {コンポーネント契約ID}のように見に行くされていません – sdwilsh
申し訳ありませんが、JSのグローバルプロパティについては何も新しいことはありません。 nsIDOMGlobalPropertyInitializerインターフェイスは新しくなっていますが、質問者の質問には必要ありません。あなたのJSグローバルプロパティがそれを実装している場合、それがどのウィンドウオブジェクトにアタッチされているかを知ることができるので、かなり涼しいです。これはFirefox 4以前では不可能でした。 –