К сожалению, мы вынуждены использовать элемент управления JavaScript, предназначенный для веб-страницы, в нашем настольном приложении Windows. Для этого мы размещаем Internet Explorer внутри нашего приложения и просим его перейти на локальную веб-страницу. Затем мы получаем интерфейс IDispatch механизма сценариев и используем его для взаимодействия с элементом управления. Веб-страница выглядит примерно так:
<html>
<head>
<script src="third party website url" type="text/javascript"></script>
</head>
<body onload="OurApp.OnLoad()">
</body>
</html>
(для ясности я опустил некоторые теги и атрибуты.) Мы добавляем объект "OurApp" в пространство имен обработчика сценариев. Это интерфейс IDispatch, который позволяет скрипту перезванивать в наше приложение. В методе OnLoad () нашего приложения мы создаем различные объекты JavaScript, определенные элементом управления.
Проблема:
В 99% случаев эта установка прекрасно работает. К сожалению, на некоторых клиентских машинах наш метод OnLoad () не может найти ни одного из ожидаемых методов в обработчике сценариев. Это похоже на то, что JavaScript с веб-сайта третьей стороны либо не загружается, либо не запускается. Для многих клиентов мы решили проблему, изменив настройки безопасности в Internet Explorer. Но теперь у нас есть клиенты, у которых настройки безопасности кажутся правильными, но мы все еще сталкиваемся с проблемой.
В качестве дополнительной складки, если я создаю веб-страницу, как указано выше, и заказчик открывает ее на своем компьютере, он получает всплывающую панель с просьбой авторизовать активный контент, а затем все работает нормально, как только он соглашается. (На этой странице я заменил вызов OurApp.OnLoad () на некоторый JavaScript, который делает то же самое.) Это то же самое поведение, которое я наблюдаю на моей машине, но наше приложение здесь работает нормально. Мы не получаем никаких сообщений об ошибках на компьютере клиента (хотя, возможно, мы просто не ищем в нужных местах).
Итак, я в тупике. Любые мысли или предложения будут с благодарностью.
Обновление
Нам наконец удалось решить проблему. Проблема заключалась в том, что мы передавали неподдерживаемый язык на сторонний веб-сайт. В этом случае они возвращались в виде пустого сценария вместо близкого совпадения или разумного значения по умолчанию.