«JSON» не определен

Я пытаюсь загрузить фоновый веб-сайт Chromecast в c# WebBrowser, но получаю: введите здесь описание изображения

Я предположил, что это происходит из-за того, что веб-браузер по умолчанию использует IE7 (?), Который может плохо работать с JS на веб-сайте. Я попытался обновить реестр FEATURE_BROWSER_EMULATION до 9000, надеясь заставить webbrowser использовать инфраструктуру IE9. Но я все еще получаю те же ошибки.

Является ли веб-браузер базовым для этой задачи или есть способ обойти эту проблему?

РЕДАКТИРОВАТЬ:

Итак, когда я печатаю webbrowser.version, я получаю: Версия: 11.0.9600.16518. Какая у меня текущая версия IE. Если я открою IE11 и перейду к URL-адресу, он отлично работает. Не уверен, почему у webbroswer возникла проблема.

Я попытался внедрить парсер JSON на веб-страницу с помощью этого кода:

HtmlDocument doc = webBrowser1.Document;
            Console.WriteLine(doc);
            HtmlElement head = doc.GetElementsByTagName("head")[0];
            HtmlElement s = doc.CreateElement("script");
            s.SetAttribute("type", "text/javascript");
            s.SetAttribute("src", "http://192.168.1.23:10000/JSON-js-master/json2.js");
            head.AppendChild(s);

Я пробовал с локальными и внешними ips, ссылаясь на файл хоста. Не похоже, чтобы иметь значение.


person Nick    schedule 09.03.2014    source источник
comment
Вау, да, я бы сказал, что IE7 слишком стар! Можно ли использовать другой браузер?   -  person Mike Schwartz    schedule 09.03.2014
comment
Когда вы обновляли реестр, вы включали правильное имя вашего процесса, верно? msdn.microsoft.com/en-us/library/   -  person Brad Rem    schedule 09.03.2014
comment
Элемент управления WebBrowser является IE. На вашем компьютере всегда установлена ​​та же версия IE. Обновите IE, и вы будете обновлять элемент управления. Кроме того, попробуйте сайт, используя браузер напрямую, и посмотрите, что произойдет.   -  person John Saunders    schedule 09.03.2014
comment
@JohnSaunders, я только что запустил элемент управления WebBrowser, перейдя на страницу, на которую Ник ссылается в своем вопросе, и получаю те же результаты, что и он. Переход по ссылке в IE проходит успешно. Интересно, что перевод IE в режим совместимости вызывает очень похожие проблемы, которые создает WebBrowser.   -  person Brad Rem    schedule 09.03.2014
comment
Я поместил его в реестр как для 32-битной, так и для 64-битной версии. Казалось, это не имеет значения. Теперь на моем компьютере установлен IE11, который, как сказал @BradRem, отлично отображает страницу. Так что я в недоумении, почему у webbroswer проблемы с сайтом.   -  person Nick    schedule 09.03.2014
comment
Режим эмуляции браузера IE ненадежен. Я видел, как во время эмуляции работают вещи, которые не работают в реальной версии.   -  person CSharper    schedule 09.03.2014
comment
@nick, можешь вставить отсутствующий json в элемент управления WebBrowser? Проверьте это решение SO, которое, по сути, является вашей проблемой: stackoverflow.com/a/17322464/1243316   -  person Brad Rem    schedule 09.03.2014
comment
@BradRem Я пробовал инъекцию, но безрезультатно. Я получаю те же ошибки. Смотрите редактирование того, что я сделал.   -  person Nick    schedule 09.03.2014
comment
@BradRem: какую версию IE вы используете? Если это происходит с IE11, то его использование IE7 является отвлекающим маневром.   -  person John Saunders    schedule 09.03.2014
comment
@JohnSaunders, я использую IE11. Я действительно надеялся, что инъекция json поможет.   -  person Brad Rem    schedule 10.03.2014
comment
Прежде всего, вам нужно выяснить, что подразумевается под «JSON» не определено. Я подозреваю, что какой-то скрипт не загрузился, так что вызывающий скрипт ожидает функцию с именем JSON или переменную с именем JSON и она не определена. Но искать синтаксические анализаторы JSON или беспокоиться о совместимости преждевременно, пока вы не узнаете, что означает эта ошибка.   -  person John Saunders    schedule 10.03.2014
comment
@Nick, поскольку у меня установлен IE 11, я установил для параметра эмуляции браузера значение 11001, и он работает.   -  person Brad Rem    schedule 10.03.2014


Ответы (1)


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

Вам нужно изменить настройки эмуляции браузера в реестре, чтобы веб-браузер контролировал пользователей более современным набором функций IE:

элементы управления функциями Интернета

Как вы уже сказали в своем вопросе, в реестре необходимо настроить две области:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

В каждом из этих двух мест имя процесса ваших приложений включено в набор значений DWORD, указывающих уровень совместимости. Конкретные значения можно найти в в Интернете. Управляет справочной страницей. Имена файла — это имя вашего приложения «MyApplication1.exe», или, если вы работаете из Visual Studio, это «MyApplication1.vshost.exe».

Поскольку у меня установлен IE 11, я установил для параметра эмуляции браузера значение 11001, и это сработало для вашей связанной веб-страницы.

person Brad Rem    schedule 09.03.2014