MFCアプリケーションで作業していますが、Internet Explorer(コンポーネントのCHtmlViewを使用しています)を表示する必要があります。現在、レンダリングモードを変更できますIEはFEATURE_BROWSER_EMULATIONレジストリキーを使用して動作します。ただし、アプリケーションのすべてのCHtmlViewインスタンスのレンダリングモードを変更するだけでなく、その変更を適用することもできます。アプリケーションを再起動する必要があります。
問題は、私たちのアプリケーションに複数のバージョンのIEを並べて表示させたいということです。私はそれが1つのコンピュータで複数のIEのバージョンを得ることが可能であることを知っていますが、私は1つのアプリケーションでそれらをすべて取得する方法はわかりません。
私たちはいくつかのアイデアを持っていますが、この問題を解決する方法はありますが、実際には簡単な解決策ではありません。とにかく、ここで私たちが作ってみたものです:1つのアプリケーションに複数のInternet Explorerのバージョンが並んでいます
、ページのソースコードをダウンロードしてくださいdocument compatibility tagを追加し、絶対的なものに、文書内のすべてのアドレスを変更し、ディスクにこのページを保存。その後、IEでディスクからページをリロードします。このソリューションは、IEが正しいレンダリングモードを使用するようになりますが、ページが元の場所とは異なる場所にあるため、一部のリソースを読み込めないため、部分的にしか機能しません。 JavaScriptで生成されたJavaScriptは生成しません。そして、この解決法は一般的に非常に面倒なので、私たちはそれを落としました。
使用する複数のプロセスが - 各IEのバージョンは、それが自身の実行ファイル/ DLLライブラリだだろう、私たちは各実行にbrowser emulation featureを使用して、何とか1つのアプリケーションにこれを接着剤(私は認める、私は「としてどのように、見当がつかないWindows/MFCで複数のプロセスを使用したことはありません)。しかし、その解決策が機能するかどうかわかりません...
解決策1と同様の方法でダウンロードされたソースコードが変更されます。document compatibility tag IEを強制的に所望のモードにすることができるが、IEはソースが元の位置から来ると見なすので、アドレスをそのまま残すことができる。このソリューションは私にとっては最も安全なものだと思われますが、2.ソリューションと同様に、アプリケーションのプロキシレイヤーを作成する方法、さらに重要なのは時間がかかります。
他に解決方法がありますか?ソリューションがCHtmlView以外のものを使用している場合は、それを変更することができます。 IEのバージョンについては、IE6をサポートするのがいいでしょうが、必要ではなく、必要最低限のバージョンはIE7です。
お時間をいただきありがとうございました。どんなアイデアもありがとうございます。
私が知っているこの唯一の例は[IETester](http://www.my-debugbar.com/wiki/IETester/HomePage)です。それはそれができることを証明しますが、実際にそれを行う方法を見つけることであなたを助けません。しかし、それはあなたにいくつかのリードを与えるかもしれません。 – Spudley
はい、私はIEのテスターがこれを行うことができる知っている。限り、私は知っている、それは複数のプロセスを使用して(確かに)。問題は、私たちはしばらく前にそれを試してみました。とてもバギーで、いつもクラッシュしていました。しかし、IETesterの主な問題は、選択したブラウザとして100%ページを表示しなかったことです。試してから数ヶ月ですが、正確に何が間違っているのか分かりませんが、いくつかの問題。それはまだ優れたツールだと言っていました。 –