2009-06-17 2 views
2

Мы находимся в неудачной ситуации, когда вам нужно использовать элемент управления JavaScript, предназначенный для веб-страницы внутри нашего рабочего стола Windows. Для этого мы размещаем Internet Explorer внутри нашего приложения и сообщаем ему перейти на локальную веб-страницу. Затем мы получаем интерфейс IDispatch для механизма сценария и используем его для взаимодействия с элементом управления. Веб-страница выглядит следующим образом:Javascript не загружается в размещенном веб-браузере

<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, который делает то же самое.) Это то же поведение, что и на моей машине, но наше приложение отлично работает. Мы вообще не получаем сообщений об ошибках на машине клиента (хотя, возможно, мы просто не смотрим в нужные места).

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

Обновление Нам наконец удалось решить проблему. Проблема заключалась в том, что мы передавали неподдерживаемый язык на сторонний веб-сайт. В этом случае они возвращались как пустой скрипт вместо близкого соответствия или разумного значения по умолчанию.

ответ

2

Вы можете реализовать свой собственный менеджер безопасности:

http://msdn.microsoft.com/en-us/library/ms537182(VS.85).aspx

+0

Это выглядит очень многообещающим. Я дам вам знать, как это получается. –

+0

Ну, я реализовал интерфейс ISecurityManager на нашем контрольном сайте, но до сих пор не радуюсь. Это решает проблему, когда параметры безопасности Internet Explorer слишком запретительны, что полезно для нас. Это, безусловно, устранит призывы к поддержке, поэтому спасибо за это. К сожалению, у нашего клиента с нечетным мячом все еще есть проблемы, которые, я думаю, должны быть одним и тем же симптомом, но по другой причине.Во всяком случае, я буду продолжать. Еще раз спасибо. –

+0

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

2

Трудно быть на 100% уверенным, в чем проблема, но если бы я догадался, я бы сказал, что это, вероятно, связано с тем, что ИТ-отделы клиентов блокируют свои машины с определенными политиками безопасности, прокси-серверами, такими вещами , Обсуждали ли вы эти проблемы с ИТ-отделом клиентов, которые испытывают эту проблему?

Вы подключаетесь к удаленной странице на другом порту, чем: 80 в размещенном элементе управления IE? Я не знаю много, но IE COM, но можно ли получить ошибки, предупреждения, вещи такого характера программно?

+0

Да, но они не были полезны. Особенно странно то, что Internet Explorer может отображать локальную страницу просто отлично, но размещенный элемент управления Internet Explorer не может (но только на их машине). –

Смежные вопросы