2011-07-19 16 views
3

私はウェブサイトをシミュレートするFireFoxのアドオンをビルドしていますが、ローカルライブラリから実行しています。私はそれは、プレーンHTTPをしていた場合はFireFoxの送信することをユーザーエージェント文字列のホールドを取得する方法を探しています(look here、あなたが詳細をお知りになりたい場合)firefoxユーザーエージェント文字列を取得するには?

。私は自分自身でnsIProtocolHandlerをやっていて、nsIHttpChannelの独自の実装を提供しています。もし私がa peek at the sourceを持っていれば、私は自分自身ですべての作業をしなければならないようです。

nsHttpHandlerにcontract/object-idがないかぎり、私はちょっとだけUserAgentを取得するためにインスタンスを作成することができますか? (Init()にはInitUserAgentComponents()があり、そこに到達することを期待しているので注意してください... httpプロトコルハンドラはチャネルとハンドラを行い、nsHttpHandlerへの直接の契約はないと思います。これは、バージョン4てきた中で行われていたか)

私は壁強のぞき見を持っている場合、私はその並行次元でだけこれを行い、この世界的に利用できるコールObtainUserAgentStringに気づく...

答えて

3

var httpHandler = Cc["@mozilla.org/network/protocol;1?name=http"]. 
    getService(Ci.nsIHttpProtocolHandler); 
var userAgent = httpHandler.userAgent; 
+0

同じことはもちろんC++でも使えます: 'nsCOMPtr httpHandler(do_GetService(" @ mozilla.org/network/protocol;1?name=http ")); httpHandler-> GetUserAgent(userAgent); ' –

+0

do_GetServiceは何をするのでしょうか?私はこれを持っていますが、サポートされていないインターフェイスをスローします: 'NS_GetServiceManager(SvcMgr); SvcMgr.GetServiceByContractID(NS_IHTTPPROTOCOLHANDLER_CONTRACT、nsIHttpProtocolHandler、h);' –

+0

自分でNS_IHTTPPROTOCOLHAND LER_CONTRACTを定義していますか?価値は何ですか? –

3

どうやらFirefoxのchangedあなたは試しました:

alert(window.navigator.userAgent); 
+0

私はJavaScriptを実行していないよ、navigatorオブジェクトへのXPCOMの方法は何ですか? –

1

何らかの理由であなたがあなたのタグで示唆しているようにNPAPIを使用する必要がある場合は、NPN_UserAgentを使用して取得することができます。しかし、あなたが実際にエクステンションのためだけにそれをする必要があれば、私はショックを受けます。アンソニーの答えは、あなたが探しているものより多くの可能性が高いです。あなたはこのようにXPCOMを経由してそれを得ることができ

関連する問題