問題タブ [gecko]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firefox - ネイティブ ウィンドウ インターフェイスを備えた Firefox XPCOM プラグインを作成しますか? (ActiveX コントロールと同様)
Internet Explorer と ActiveX コントロール テスト コンテナー プログラムで正常に動作する ActiveX コントロールがあります。コントロールの実際の動作は 2 つの部分に分割されます。一方の部分は OLE ホストとインターフェイスする ATL ガンクであり、もう一方の部分はウィンドウのアタッチ、サイズ変更、描画、およびマウス/キーボードのコールバックを受け取るだけの実際の肉です。イベント。
ここで、Firefox プラグイン用に ATL ガンクに相当するものを書きたいと思います (理想的には同じバイナリ内にあるため、2 つのバイナリをリンクする必要はありませんが、ここでは柔軟に対応できます)。Gecko SDK をダウンロードして使用して XPCOM コンポーネントを構築しましたが、動作しているように見えますが、コンポーネントを Firefox に埋め込まれたネイティブ UI コンポーネントとして使用できるようにするために実装するインターフェイスがわかりません。これは、Flash プレーヤー プラグイン、PDF ビューアー プラグイン、QuickTime プレーヤー プラグインなどのニーズと似ています。javascript と XUL では十分ではありません。
Web で例を探しましたが、見つけられる唯一の例は、一見古い NS_PluginInitialize() / NS_NewPluginInstance() インターフェースに基づいたもので、XPCOM ではありません (ただし、他の名前がありますか?)。
XPCOM を介して同じことを達成する方法はありますか? もしそうなら、どのように?また、これを行う方法についての概要ドキュメント (インターフェイス メンバーのリストだけでなく) はありますか?
firefox - Firefox 拡張機能から Web ページに要素を追加する方法
tag:<input type="file" ... >
が見つかり、ファイルが選択されたときに、読み込まれたページにボタンを配置する Firefox 拡張機能を開発します。
同様に、スカイプ ツールバーも同様のことを行っていると思います。ウェブサイトに電話番号が含まれている場合、Skype 拡張機能が自動的にそれをボタンに変換し、クリックしてスカイプの連絡先に電話をかけることができます。
私は GNU/Linux システムを使用していますが、残念ながら skype 拡張機能は Firefox/skype の Linux バージョンでは機能しないため、何かをリバース エンジニアリングしようとすることさえできません...
firefox 拡張機能には、overlay.js ファイルが含まれています。このファイルには、拡張機能のメイン ロジックが含まれています。<input type="file" ... >
ここでは、次のコードで簡単にノードを見つけることができます。
そのため、ファイルが選択されると、警告ウィンドウが表示され、ファイル名が表示されます。
しかし、ファイルが選択されたときにページにボタンを配置するにはどうすればよいですか?
私はさまざまな document.parentNode および類似のものを試してきましたが、何も機能していないようです。
それとも、ロードされたページに物を入れることができない可能性はありますか?
ありがとう
delphi - Delphi で nsIProtocolHandler を実装する
Delphi で nsIProtocolHandler 実装を構築しようとしています。(私は以前に IInternetProtocol を成功させたことがあり、Internet Explorer で得たものを FireFox で使用したいと考えています。) d-geckoプロジェクトのおかげで、何らかの方法で TInterfacedObject マジックを nsISupports マジックにリンクすることができます。要求されたときに nsIModule を提供し、要求されたときに nsIFactory を提供し、要求されたときに nsIProtocolHandler の 1 つを提供し、要求されたときに nsIChannel/nsIHttpChannel の 1 つを提供する DLL を作成します。
ホスト プロセスとして firefox.exe を使用してデバッグすると、ライブラリが読み込まれ、NewURI が 3 回呼び出され、NewChannel が呼び出され、nsIChannel とnsIHttpChannelを実装するオブジェクトが渡されることがわかります。
悩んでいるところです。AsyncOpen から制御を返すまで、取得した nsIStreamListener で OnStartRequest と OnDataAvailable を呼び出すことは想定されていませんが、AsyncOpen が呼び出されたスレッドで制御を取得していないようです。
CreateInstanceByContractID('@mozilla.org/network/protocol;1?name=http',
デフォルトのhttpハンドラー( ...で取得)の周りに自作のラッパーを使用してデバッグを試みました。渡されたリスナーもラップしました。奇妙なことに、チャネル ラッパーが終了した後、同じスレッドでOnStartRequest と OnDataAvailable が呼び出されます。しかし、誰が電話しているのですか?それがラップしようとしていた http チャネルである場合、どのように (同じスレッドで) 生き残り、リスナーを呼び出すための制御をどのように取得しますか? 私は困惑しています。そして立ち往生。
d-gecko プロジェクトの主な開発者に連絡を取ろうとしましたが、応答がありません。
(また、誰かがnsIProtocolHandler の MDC のトーク ページの下部にある私の宣伝文句に気付きましたか?)
(もう 1 つ、C++ で nsBaseChannel から継承するだけで「生活がよりシンプルになる」ことはわかっています。しかし、重要なのは、既存の Delphi プロジェクト コアに FireFox プロトコル ハンドラを追加することです。)
更新:私はさらにいくつかの読書を行いました.ここでも言及されています:「ストリームリスナーのメソッドは、asyncOpenを呼び出すスレッドで呼び出されます[...]」しかし、最初に「ホスティングアプリケーション」から呼び出されずにそれがどのように可能であるか、私には明らかではありません。それはXPCOMのトリックですか?Firefox のソースを入手する前に、もっと (もっと) 読む必要があると思います。
xpcom - nsIBinaryInputStream からイメージを作成する
jpeg や gif などの圧縮された画像データを含む js トリックを使用して、バイナリ入力ストリームを作成します。imgITools::decodeImageData または他の方法を使用して、このデータをデコードして表示したいのですが、まだ方法が見つかりませんでした。どこから始めればよいですか?
firefox - IE以外のブラウザ用のブラウザキャッシュAPI
IEには、IEブラウザのキャッシュを読み取って操作するためのGetUrlCacheEntryInfoなどのWinInetAPIがあります。
FirefoxやChromeなどのIE以外のブラウザ用の同様のAPIはありますか?もしそうなら、どこでより多くの情報を得ることができますか?
ありがとう
アップデート:
以下(XPCOMコンポーネントからFirefoxキャッシュにアクセスする)によると、WinInet関数GetUrlCacheEntryInfo()は、nsICacheSession.openCacheEntry()によって実行され、nsICacheEntryDescriptorを取得できます。キャッシュエントリを作成する同等のWinInet関数CreateUrlCacheEntry()はありますか?
delphi - nsIProtocolHandler: HTML ページの画像のロード中に問題が発生しました
Delphi で nsIProtocolHandler 実装を構築しています。(詳細はこちら) そして、それはすでに機能しています。モジュールが構築するデータは、nsIInputStream を介してストリーミングされます。nsIRequest、nsIChannel、および nsIHttpChannel のすべてのメソッドとプロパティが機能しています。
テストを開始しましたが、奇妙なことに遭遇しました。この単純な HTML を含むページ "a.html" があります。
<img src="a.png">
"xxm://test/a.html" と "xxm://test/a.png" はどちらも Firefox で動作し、上記の HTML または PNG 画像データを提供します。問題は HTML ページの表示にあり、画像が読み込まれません。デバッグすると、次のように表示されます。
- a.png に対して NewChannel が呼び出されます (Firefox が a.html で OnDataAvailable 通知を処理している場合)。
- NotificationCallbacks が設定されています (参照を保持するだけで十分ですよね?)
- RequestHeader " " は " "
Accept
に設定されていますimage/png,image/*;q=0.8,*/*;q=0.5
- ただし、その後、チャネル オブジェクトが解放されます (ほとんどの場合、参照カウントがゼロのため)。
他のリクエストを見ると、他のいくつかのプロパティ (LoadFlags や OriginalURI など) が設定され、AsyncOpenが呼び出されることが予想されます。ここから、リクエストへの応答を開始できます。
誰もこれを認識していますか?私は何か間違ったことをしていますか?おそらく、LoadFlags または LoadGroup でしょうか? LoadGroup で AddRequest と RemoveRequest を呼び出すタイミングがわかりません。また、nsHttpChannelとnsBaseChannelからのぞきます
更新:新しくなった Firefox 3.5 で確認しましたが、同じです。
更新:問題をさらに特定するために、「file://test/a1.html」を試してみましたが<img src="xxm://test/a.png" />
、発生しているイベントのシーケンスを超えるだけです。この2 次リクエストを負荷グループに追加して、AsyncOpen を呼び出すことになっている場合、その参照をどこで取得すればよいかわかりません。
さらに:リクエスト ヘッダーに追加された "Accept" 文字列のインスタンスを 1 つだけ見つけました。新しいチャネルを作成した直後に nsIHttpChannelInternal をクエリしますが、この QueryInterface 呼び出しを取得することさえできません... (私は投稿しましたここにある)
winforms - Firefox/GeckoコントロールがWindowsフォームのキー押下を妨害する
編集:賞金に加えて、Firefox/Geckoコードベースでこのバグを修正するために$250を支払う用意があります。これは、問題を再現する簡単なテストプロジェクト(Visual Studio 2008 C#)です。
編集#2このバグを修正するために600ドルを支払う用意があります。問題を再現するサンプルプロジェクトについては、上記を参照してください。
HTMLを表示するためのFirefox(Gecko)ActiveXコントロールがC#Windowsフォームにあります。
このFirefoxActiveXコントロールがフォーム上にある場合、キーを押したときの約2〜3%が成功しません。むしろ、別のWindowsメッセージが送信されます。
Tabキーを押したままにして、3つの通常のWinFormsテキストボックスをタブで移動します。97%の確率で正しく動作します。Spy ++は、WM_KEYDOWNメッセージが正しく送信されたことを通知します。
通常の動作http://judahhimango.com/images/normaltab.jpg
しかし、ランダムに、おそらく2〜3%の確率で、タブキー(または他のキー)が正しく処理されません。Spy ++は、代わりにWM_CHARが送信されていることを通知します。
奇妙な振る舞いhttp://judahhimango.com/images/screwytab.png
奇妙な動作が発生すると、キーがまったく処理されないか、正しく処理されません(タブ文字をサポートしていないテキストボックスに「\t」文字を挿入するなど)。
これは、FirefoxActiveXコントロールがフォーム上にある場合にのみ発生します。
私たちの質問は:Firefox / Geckoエンジンは、これらの副作用を引き起こす可能性のあるある種のキーボードフックをインストールしますか?または、さらに良いことに、この問題をどのように修正しますか?
python - Windows、Mac、Linuxで透明な背景を持つ最新のHTMLとFlashをレンダリングするためのLGPL / Apache / BSD Pythonライブラリはありますか?
DOMアクセスも備えた適切なPythonライブラリを探しています。フラッシュの透明度が引き継がれなくてもかまいません。PyQTのライセンスはプロジェクトと互換性がなく、PySideはまだクロスプラットフォームでコンパイルされていません。何かご意見は?
webkit - ウェブサイトのサムネイルを作成するには?
すでにこれを実行している webkit/gecko ベースのコマンド ライン アプリ (複数ページのレンダリングまでのサーバー スピードアップとしても機能している可能性があります) が既にあると思いますか?