Я работаю над надстройкой в outlook, используя VB .Net, которая просматривает HTML-окно на панели чтения, используя интерфейс mshtml. На странице есть некоторый код JavaScript, который я вызываю с помощью IHtmlWindow2.execScript. Я загружаю страницу, используя функцию IHtmlWindow2.navigate (url), и получаю доступ к некоторым переменным JavaScript, выполняя следующие действия:
Dim htmlWindow As IHTMLWindow2
htmlWindow.execScript("x=somefunction();","javascript")
Dim result as String = htmlWindow.document.Script.x.ToString()
Этот код работает нормально, когда я запускаю его из 64-битного экземпляра outlook ... при запуске надстройки из 32-битного экземпляра outlook (на 32-битной или 64-битной машине) он выдает System.NotSupportedException после выполнения второго перехода по htmlWindow, когда я сначала перейдите к URL и выполните этот код, он работает без проблем.
с помощью отладчика Internet Explorer F12Chooser на загруженной странице в outlook приведенный ниже код выполняется без ошибок и возвращает требуемое значение.
x=somefunction();
window.document.Script.x;
Однако я попробовал переломный момент на
htmlWindow.execScript("x=somefunction();","javascript")
и выполнил тот же код в непосредственном окне Visual Studio, но с другим именем переменной каждый раз, когда я выполняю навигацию, я не получаю исключения
htmlWindow.execScript("y=somefunction();","javascript")
MessageBox.Show(htmlWindow.document.Script.y.ToString())
Я не понимаю этого поведения, и я был бы признателен за любую помощь в этом. Я подозреваю, что это как-то связано с кэшированием, но я не знаю, где, я искал в интернете это безуспешно.