Локальная загрузка файла HTML / Javascript в объекте C # WebBrowser не загружается правильно? - PullRequest
2 голосов
/ 25 апреля 2011

Я использую .NET Framework 4.0 (с WPF), пытаясь загрузить локальный файл HTML в объекте WebBrowser (System.Windows.Controls.WebBrowser) как с локально встроенным JavaScript, так и с удаленного сервера.Проблема в том, что javascript (ajax с dojo) не выполняется внутри объекта WebBrowser при загрузке:

webBrowser.NavigateToString(LoadStringFromFile("map.html"));

Однако при удаленной загрузке он работает нормально, как показано ниже:

webBrowser.Navigate("http://www.example.com/map.html");

Пример кода выдержки из кода Javascript в html-файле:

<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.6"></script>
<script type="text/javascript">
dojo.require("esri.map");

var map;

var colorRGB = { "white": [255,255,255], "red": [255,0,0], "blue": [0,255,0] };

function init()
{
    var streetLayer = new esri.layers.ArcGISTiledMapServiceLayer(
        "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer");

    var extent = new esri.geometry.Extent(-140.910, 11.267, -53.019, 64.002);
    map = new esri.Map("map", { extent:extent });

    map.addLayer(streetLayer);

    dojo.connect(map,"onLoad", processLocations);
}

Кто-нибудь знает, что с этим не так?

Мои исследования показывают, что это нужно сделатьс IE и интернет-зонами, но не смогли подтвердить это.

Ответы [ 4 ]

3 голосов
/ 19 апреля 2013

Класс WPF WebBrowser имеет статический инициализатор, который включает FEATURE_LOCALMACHINE_LOCKDOWN для всего процесса. Вы можете использовать CoInternetSetFeatureEnabled для выключения FEATURE_LOCALMACHINE_LOCKDOWN в событии Навигации WebBrowser.

Это решение не требует изменения отображаемых файлов HTML, но отключает некоторые функции безопасности, которые вам, вероятно, не нужны при отображении доверенного локального содержимого. См. http://technet.microsoft.com/en-us/library/cc782928(v=ws.10).aspx для получения дополнительной информации о блокировке локального компьютера.

См. Как отключить звук щелчка в WebBrowser Control для PInvoke и https://github.com/TaoK/PoorMansTSqlFormatter/blob/d6b4f7bedc02ce1bf59acb16dd1f49609c216aa7/PoorMansTSqlFormatterDemo/FrameworkClassReplacements/CustomContentWebBrowser.cs для примера использования.

3 голосов
/ 25 апреля 2011

Когда я вставляю это в html-файл и открываю в Internet Explorer, он отображает сообщение о том, что он заблокировал содержимое activex / script.Выберите «Свойства обозревателя»> «Дополнительно»> «Безопасность»> «Разрешить запуск активного содержимого в файлах на моем компьютере».Если предупреждение исчезает в IE, то оно должно работать в объекте WebBrowser

1 голос
/ 15 декабря 2013

Вот мое решение для предотвращения предупреждений сценариев:

WebBrowser.ScriptErrorsSuppressed = true;

Кроме того, я поставил свой веб-сайт как надежный веб-сайт в настройках Интернета, не знаю, помогает ли это, но свойство scriptErrorsSuppressedмне было достаточно.

Надеюсь, это поможет.

0 голосов
/ 11 марта 2017

Для меня проблема была:

Шаги для включения элементов управления ActiveX в Internet Explorer:

1.Выберите Сервис -> Свойства обозревателя из Internet Explorer.

2.Выберите вкладку «Безопасность» в диалоговом окне «Свойства обозревателя».

3.Выберите соответствующую зону веб-содержимого и нажмите «Пользовательский уровень».

4.Сделайте следующие параметры доступными в элементах управления ActiveX иПодключаемые модули к любому из включателей. Подсказка: 1.Загрузить подписанные элементы ActiveX

2. Запустите элементы управления ActiveX и подключаемые модули

3. Элементы управления ActiveX JavaScript отмечены как безопасные для сценариев

5.Нажмите «ОК», чтобы сохранить настройки безопасности.

6.Нажмите «ОК», чтобы сохранить и закрыть диалоговое окно «Свойства обозревателя».

Затем нажмите «Больше не показывать это сообщение».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...