問題タブ [geckofx]
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.
c# - Web オートメーションのより良いソリューションは何ですか - .NET の Geckofx または WebBrowser Control
Web オートメーションのソリューションをコーディングしています。過去のプロジェクトのいくつかでデフォルトの Web ブラウザー コントロールを使用しています。しかし、Web ブラウザ コントロールのパフォーマンスがあまり良くないことがわかりました。
しばらく実行すると、通常はアプリケーションがハングし、アプリケーションが長時間実行されるとメモリ リークが発生することもあります。
ここで誰かが Gecko を使用しているかどうかを知りたい - http://code.google.com/p/geckofx/と、長い Web スクレイピング タスクを実行するためのそのパフォーマンスについて。私のアプリケーションは C# です。
c# - XPCOMへのC#相互運用
質問をする前に、.NET相互運用に関する知識が乏しいことを認める必要があります。そのため、初心者のミスを犯している可能性があることに気づきました。
GeckoFxライブラリを使用して、埋め込まれたGecko(Firefox)ブラウザーインスタンスを含むC#アプリケーションを作成しています。このアプリは、元の形式のGeckoFxを使用して正常に動作しますが、MozillansIDOMXPathEvaluator
インターフェイスを使用して、XPathクエリをサポートするように拡張する必要があります。
GeckoFxコードベースには、基盤となるマネージドGeckoインターフェイスを公開および使用する例が多数含まれています。同じコードパターンに従って、いくつかの新しいインターフェイスを公開しました。
新しいインターフェイスを公開しnsIDOMXPathEvaluator
た状態で、ロードされたDOMのコンテキストでXPath式を評価するために使用しようとします。
最初の3つの変数は正しく入力されていますが、の呼び出しはEvaluate
「保護されたメモリの読み取りまたは書き込みを試みました」という例外を除いて失敗します。マーシャリングされたタイプの式パラメーターを試したときにさまざまな例外メッセージが表示されたため、コードが文字列値をマーシャリングする方法に問題があると考える傾向があります。
このフォーラムの投稿に示されているように、この問題に苦しんでいるのは私だけではないようですが、私の実装がGeckoFxライブラリの他の多くの実用的な例とどのように異なるかを理解できません。
任意のアイデアをいただければ幸いです。
ありがとう、ティム。
c# - GeckoFXWebブラウザコンポーネントからページのソースを取得します
プロパティのHTMLコードはGeckoWebBrowser.Document.DocumentElement.InnerHtml
、サーバーからダウンロードされたhtmlとは異なります。これは、DOMに変換され、ドキュメント構造を変更するJavascriptが存在する可能性があるためです。
実際のページソースを取得する方法は?
javascript - GeckoFX で画像をキャッシュする方法
私は GeckoFX を使用して Web アプリケーションの GUI をレンダリングしています。JavaScript によって 1 つの HTML ページに挿入された小さな 16x16 の繰り返し画像があちこちにあります。
これらの IMG インスタンスはすべて、Web サーバーから 1 つずつダウンロードされます。この動作は、キャッシュ制御または期限切れヘッダーを使用したり、javascript Image() を使用したりして最適化できませんでした。そのため、レンダリングは Chrome や IE に比べて非常に遅く、汚れています。
GeckoFX でいくつかの小さな画像をキャッシュまたはプリロードするにはどうすればよいですか?
c# - GeckoFX DOM 要素を JavaScript ナビゲーション呼び出しに渡す
GeckoFX Web ブラウザーを使用して、このように JavaScript を介して GeckoElement を渡すことは可能ですか?
JavaScript (これは正常に動作します) atm を介して DOM 要素を選択していますが、要素は c# にあります。
c# - アンマネージインターフェイスメソッドから値を適切に返す方法は?
私はGeckoFx(http://geckofx.org)を拡張している最中であり、XPComが提供するアンマネージインターフェイスから配列値を返す際に問題が発生しています。
最新のXulRunner1.9.2.13ビルドを使用してGeckoFxに大量の新機能サポートを追加しましたが、インターフェイスメソッドから配列を返そうとするとアクセス違反の例外が発生します。例えば:
問題は、GetDictionaryListが返されるときに、単一のインデックスを持ち、1つのディクショナリの名前を含むリストを返し(このメソッドが検索する場所に2つのディクショナリがあります)、カウントが正しい値2で返されることです。それ以外の場合、メソッドは失敗してアクセス違反をスローし、_dictionariesの値はstring [0]ですが、カウントは2の値で正しいままです。
この質問の最大の部分は、「インターフェイス宣言でメソッドとそのパラメーターを正しくマーシャリングしていますか?」である必要があると思います。
このサンプルコードはまさにその例です。GeckoFxに実装したいXulRunnerの機能は他にもいくつかありますが、それらも配列を返し、同じ問題が発生します。この問題を乗り越えることができるまで、私の仕事は少し停滞しています。
あなたが提供できるありとあらゆる助けに感謝します。
-スコット
c# - Gecko 2.0 の GeckoFX アップデート?
先月 GeckoFX を見つけたときは本当に興奮しました。私の雇用主は、(デスクトップベースのアプリから Web ベースのアプリへの移行をスムーズにするために) デスクトップアプリケーションに組み込みブラウザーを配布したいと考えており、IE ではなく Gecko を使用できることは奇跡でした!
私が見つけた GeckoFX の最新バージョンは、Gecko エンジン (Xulrunner) のバージョン 1.9.1 および 1.9.2 を使用しています。これは問題なく動作しますが、今週 Firefox 4 (Gecko 2.0) に同梱された多くの機能が欠落しています。
すでに Xulrunner 2.0 のディストリビューションを持っていますが、GeckoFX はそのままでは動作しません。XPCOM API の一部が変更されており、他にも多くのマイナーな非互換性があると確信しています。簡単に修正できると思いますが、私は C++ 開発者ではないので、まったくわかりません。
私が今探しているのは、優先順に次のいずれかです。
- Xulrunner 2.0 と互換性のあるビルド済みの GeckoFX の更新
- Gecko を利用した Web ブラウザーを C# Windows アプリケーションに埋め込むことを可能にする別のソリューション。
- どこから GeckoFX を自分で更新し始めるかについてのアドバイス (アドバイスとは、手を握って話しかけるように話すことを意味します)
コードを掘り下げてすべてのエラーを整理しようとしても役に立ちません。InvalidCastException
のインスタンスを作成しようとすると、エラーが発生し続けますnsIWebBrowser
(エラー メッセージとスタック トレースがすべて表示されるため、それ以上説明することはできません)。組み込みの Firefox 4 をまだ誰も起動していないように見えるので、頭をかきむしったり、無意味なグーグル検索をしたりしました。
アイデア?提案?
.net - マルチスレッド アプリケーションでの GeckoFX の使用
GeckoFX を使用するときにスレッドを正確に処理する方法を把握するのに問題があります。他のスレッドで GeckoWebBrowser を使用しようとすると、常にエラーが発生するようです。
具体的には、このテスト アプリケーションで実行しようとしているのは、Web ページのサムネイルを生成し、それを (WebBrowser コントロール自体ではなく) フォームに表示することです。シングルスレッドで作業する場合は、うまく機能します。
ただし、ブラウザーの作成とレンダリングを独自のスレッドに移動すると、CreateControl() を呼び出そうとすると COM エラーが発生します。
これを修正するには、Xpcom.Initialize 呼び出しもスレッドに移動します。
これはうまくいきます...一度。2 回目にナビゲートしようとすると、DocumentCompleted は 1 回だけ起動されます (about:blank を使用)。しばらくすると、COM エラーも表示されます。これは、Xpcom.Initialize (アプリケーションごとに 1 回だけ呼び出すことができ、その後は何もしない静的メソッド) を呼び出すと、GeckoFX がその特定のスレッドに永続的にバインドされることを示しているようです。永遠に。
Xpcom と GeckoFX をマルチスレッド環境で正しく動作させる方法はありますか?
.net - .NET WebBrowser コントロールに代わるものはありますか?
.NET 2.0 WinForms アプリケーションを開発しています。以前は、標準の Microsoft ActiveX WebBrowser コントロールが含まれていましたが、代替案を調査中です。
私は何をする必要がありますか:
アプリケーションで WebBrowser を標準の Web ブラウザ コントロールとして使用する
コントロールをフォームにアタッチすることなく、バックグラウンドでも使用できます。たとえば、コントロールを作成し、Web ページをレンダリングし、結果を (.DrawToBitmap を使用して) 画像に出力します。
ライフサイクルのさまざまなイベント (主に DocumentCompleted) にフックします。
Web ページは、コントロールの新しいインスタンスまたは既存のコントロールを使用して、約 30 秒ごとにロード (または再ロード) できます。アプリケーションは、長期間、無期限に実行し続けることができます。
.NET 2.0 で動作する必要があります。3.0+ または WPF のものはありません。
これまでに見つけることができた唯一の 3 つのコントロールには、先に進むのを妨げるかなり重大な問題があります。
Microsoft ActiveX WebBrowser - 大量のメモリ リークがあるため、長時間の実行には適していません。
WebKit.NET - 私が確立できた限りでは、レンダリングが完了する前にこれをフォームに添付する必要があるため、サムネイル生成ピースには役に立ちません。また、メモリリークに悩まされているようです。
GeckoFX - 私には最適ですが、スレッド化を適切にサポートしていません (これはサムネイル生成ピースにとって重要です)。
他の選択肢はありますか?
c# - geckoFx で Web サイトのサムネイルを作成するとエラーが発生する
WPF/c# で geckoFX を使用して Web サイトのイメージを作成しようとしています。コードを実行すると、エラーが発生します。
error は、geckoWebBorwser (int)wWidth および (int) wHeight を使用したビットマップの幅と高さ エラー テキストは (Parameter is not valid) および System.ArgumentException です
オンラインでエラーが発生する
System.ArgumentException)
コード例:
WebKit.Net ではこのメソッドは正常に動作します。IE webBrowser では別のメソッドがあり、このメソッドは正常に動作しますが、私のプロジェクトには適していません。