в приложении MFC, над которым я работаю, мне нужно, чтобы отображался Internet Explorer (мы используем компонент CHtmlView), в настоящее время мы можем изменить режим рендеринга, в котором работает IE, с помощью FEATURE_BROWSER_EMULATION. Однако это позволяет нам только изменить режим рендеринга всех экземпляров CHtmlView в приложении, а чтобы применить это изменение, мы должны перезапустить приложение.
Проблема в том, что мы хотели бы иметь более одной версии IE. отображаются рядом в нашем приложении. Я знаю, что можно получить несколько версий IE на одном компьютере, но я не уверен, как получить их все в одном приложении.
У нас есть некоторые идеи, как решить эту проблему, но на самом деле их нет. тривиальные решения, поэтому я хочу попросить ваших идей. Во всяком случае, вот что мы придумали:
Загрузите исходный код страницы, добавьте документ тег совместимости, измените все адреса в документе на абсолютные и сохраните эту страницу на диск. Затем перезагрузите страницу с диска с помощью IE. Это решение работает только частично, потому что, хотя оно заставляет IE использовать правильный режим рендеринга, страница не может загрузить некоторые ресурсы, потому что она находится в другом месте, чем оригинал - адреса, которые мы изменили, работают хорошо, но, например, сгенерированные JavaScript - нет. И это решение, как правило, очень грязное, поэтому мы отказались от него.
Используйте несколько процессов — каждая версия IE будет иметь свою собственную библиотеку исполняемых файлов/dll, мы используем функция эмуляции браузера для каждого исполняемого файла, а затем каким-то образом склеить это в одно приложение (признаюсь, я понятия не имею, как это сделать, так как я никогда не использовал несколько процессов с Windows/MFC) . Но я не знаю, сработает ли это решение...
Создайте прокси для нашего приложения, которое изменит загруженный исходный код так же, как представлено в решении 1, — оно добавит тег совместимости документа, чтобы перевести IE в нужный режим, но может оставить адреса нетронутыми, так как IE увидит источник как исходящие из исходного местоположения. Это решение кажется мне самым безопасным, но как и в случае с 2. решением, я не знаю, как сделать прокси-слой для нашего приложения, и что более важно, сколько времени это займет.
Итак, у вас есть какие-либо идеи о том, как еще это можно решить? Если решение использует что-то отличное от CHtmlView, так и быть, мы всегда можем это изменить. Что касается версий IE, которые мы хотели бы иметь, было бы неплохо поддерживать IE6, но это не обязательно, самая младшая необходимая версия — IE7.
Заранее спасибо за ваше время, любые идеи будут оценены.