2011-01-11 9 views
0

MFCアプリケーションで作業していますが、Internet Explorer(コンポーネントのCHtmlViewを使用しています)を表示する必要があります。現在、レンダリングモードを変更できますIEはFEATURE_BROWSER_EMULATIONレジストリキーを使用して動作します。ただし、アプリケーションのすべてのCHtmlViewインスタンスのレンダリングモードを変更するだけでなく、その変更を適用することもできます。アプリケーションを再起動する必要があります。
問題は、私たちのアプリケーションに複数のバージョンのIEを並べて表示させたいということです。私はそれが1つのコンピュータで複数のIEのバージョンを得ることが可能であることを知っていますが、私は1つのアプリケーションでそれらをすべて取得する方法はわかりません。
私たちはいくつかのアイデアを持っていますが、この問題を解決する方法はありますが、実際には簡単な解決策ではありません。とにかく、ここで私たちが作ってみたものです:1つのアプリケーションに複数のInternet Explorerのバージョンが並んでいます

  1. 、ページのソースコードをダウンロードしてくださいdocument compatibility tagを追加し、絶対的なものに、文書内のすべてのアドレスを変更し、ディスクにこのページを保存。その後、IEでディスクからページをリロードします。このソリューションは、IEが正しいレンダリングモードを使用するようになりますが、ページが元の場所とは異なる場所にあるため、一部のリソースを読み込めないため、部分的にしか機能しません。 JavaScriptで生成されたJavaScriptは生成しません。そして、この解決法は一般的に非常に面倒なので、私たちはそれを落としました。

  2. 使用する複数のプロセスが - 各IEのバージョンは、それが自身の実行ファイル/ DLLライブラリだだろう、私たちは各実行にbrowser emulation featureを使用して、何とか1つのアプリケーションにこれを接着剤(私は認める、私は「としてどのように、見当がつかないWindows/MFCで複数のプロセスを使用したことはありません)。しかし、その解決策が機能するかどうかわかりません...

  3. 解決策1と同様の方法でダウンロードされたソースコードが変更されます。document compatibility tag IEを強制的に所望のモードにすることができるが、IEはソースが元の位置から来ると見なすので、アドレスをそのまま残すことができる。このソリューションは私にとっては最も安全なものだと思われますが、2.ソリューションと同様に、アプリケーションのプロキシレイヤーを作成する方法、さらに重要なのは時間がかかります。

他に解決方法がありますか?ソリューションがCHtmlView以外のものを使用している場合は、それを変更することができます。 IEのバージョンについては、IE6をサポートするのがいいでしょうが、必要ではなく、必要最低限​​のバージョンはIE7です。

お時間をいただきありがとうございました。どんなアイデアもありがとうございます。

+0

私が知っているこの唯一の例は[IETester](http://www.my-debugbar.com/wiki/IETester/HomePage)です。それはそれができることを証明しますが、実際にそれを行う方法を見つけることであなたを助けません。しかし、それはあなたにいくつかのリードを与えるかもしれません。 – Spudley

+0

はい、私はIEのテスターがこれを行うことができる知っている。限り、私は知っている、それは複数のプロセスを使用して(確かに)。問題は、私たちはしばらく前にそれを試してみました。とてもバギーで、いつもクラッシュしていました。しかし、IETesterの主な問題は、選択したブラウザとして100%ページを表示しなかったことです。試してから数ヶ月ですが、正確に何が間違っているのか分かりませんが、いくつかの問題。それはまだ優れたツールだと言っていました。 –

答えて

0

最後に、私は(ASIOブーストを使用して実装)

我々自身のプロキシサーバーを使用して、正しい互換モードにIEを強制的にHTTPリクエスト/レスポンスヘッダを変更することによって、これを解決しています。

一意の名前を持つ複数の実行可能ファイルは、compatibility mode set in the registryです。各ブラウザのバージョンは、別々のプロセスで実行されました。

プロキシサーバーのソリューションが期待どおりに機能しないことが判明しました。マルチプロセスソリューションは意図したとおりに動作しましたが、最終的には、エミュレートされたブラウザが実際のブラウザとして機能するとは限らず、ソリューション全体が100%信頼できるものではありませんでした。

これは将来的に誰かに役立つことを願っています。

関連する問題