Один из вариантов - создать собственную диалоговую форму (в C #) с другим пользовательским элементом управления WebBrowser. Затем вы можете позвонить из Javascript в C #, чтобы открыть форму вместо использования showModalDialog.

т и спасибо за поиск.

Описание проблемы:

Я реализовал приложение c # WinForm со встроенным элементом управления браузером и реализовал IInternetSecurityManager для выполнения задач, которые нам нужны для обеспечения междоменного доступа в фреймах с нашими локально установленными веб-страницами.

Все вещи работают как положено с IInternetSecurityManager, IOleClientSite, IDocHostShowUI и IDocHostUIHandler. Другими словами, браузер вызывает нас для всех наших реализаций.

Проблема заключается в том, что веб-страница, загруженная в элемент управления браузера, имеет скрипт, который вызывает window.showModalDialog (): используемый экземпляр элемента управления браузером больше не связывается с нашим клиентским сайтом. Абсолютно никакие вызовы QueryInterface или любые другие методы не вызываются ни в одном из интерфейсов, упомянутых выше.

Документ в диалоговом окне не использует нашу реализацию менеджера безопасности, я предполагаю, потому что элемент управления веб-браузера в диалоговом окне, которое отображает IE, отличается от того, который мы называли SetClientSite ().

Вопрос:

Как мы поговорим с этим новым браузером? Нам нужно предоставить браузеру возможность управления в диалоговом окне, отображаемом IE, нашей реализацией IInternetSecurityManager. Но мы так и не получили возможность рассказать об этом нашему клиентскому сайту, так сказать. Другими словами, IE не сообщает нам об этом через интерфейс, который говорит: «Я - новый элемент управления браузером, созданный IE, и вот мой интерфейс IUnknown. Это ваш шанс настроить мой клиентский сайт и т. Д.» Мы были бы счастливы, если бы было такое уведомление от IE.

В результате используются два разных контекста безопасности, и наше приложение перестает работать каждый раз, когда мы в диалоге используем iframe, потому что наша реализация IInternetSecurityManager не используется.

Пример исходного кода:

Я выбрал исходный код для защиты невинных людей :) и сократил до того, с чем, я думаю, вы можете работать в его собственном решении Visual Studio 2010.

Пожалуйста, прочтите файл ReadMe.txt для получения информации о проблеме, действиях по воспроизведению и т. Д.

На тестовых веб-страницах, которые я написал, отображаются информация и шаги, которые помогут вам в использовании образца.

Пожалуйста, дайте мне знать, если у вас есть вопросы о том, что я пытаюсь выполнить или образец недостаточно ясен.

Пожалуйста, порекомендуйте. Спасибо.

http://home.comcast.net/~lowrider2112/bin/TestIEHost.rar

Ответы на вопрос(1)

Ваш ответ на вопрос