„JSON“ е недефиниран

Опитвам се да заредя фоновия уебсайт на Chromecast в c# уеббраузър но получавам: въведете описание на изображението тук

Предположих, че това се случва, защото уеб браузърът използва IE7 по подразбиране (?), което може да не работи добре с JS в уебсайта. Опитах се да актуализирам регистъра FEATURE_BROWSER_EMULATION до 9000, надявайки се да принудя webbrowser да използва IE9 рамка. Но все още получавам същите грешки.

Основният уеб браузър за тази задача ли е или има начин да се заобиколи този проблем?

РЕДАКТИРАНЕ:

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

Опитах се да инжектирам JSON Parser в уеб страницата с този код:

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, току-що пуснах контрола на уеббраузър, навигираща до страницата, към която Ник се свърза във въпроса си, и получавам същите резултати като него. Щракването върху връзката в 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 или по-нова версия.

Трябва да промените настройките за емулация на браузъра в системния регистър, така че WebBrowser да контролира потребителите с по-модерен набор от функции на 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