Я вызываю функции javascript из C#, используя WPF-вариант управления браузером через InvokeScript.WPF Browser throws error
Я могу назвать свою функцию один раз без проблем. Но когда я его вызываю второй раз, это вызывает следующую ошибку:
Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))
Кодекс Я использую следующий:
this.browser.LoadCompleted += (sender, args) =>
{
this.browser.InvokeScript("WriteFromExternal", new object[] { "firstCall" }); // works
this.browser.InvokeScript("WriteFromExternal", new object[] { "secondCall" }); // throws error
};
Javascript функция:
function WriteFromExternal(message) {
document.write("Message : " + message);
}
Я могу вызывать функции C# со страницы через javascript просто отлично и вызывать из C#, просто не можете вызывать второй раз. Независимо от того, какую функцию я называю.
Я не понимаю, почему это не получится во второй раз.
Спасибо
Edit:
ли следующий тест (JavaScript):
function pageLoaded() {
window.external.tick();
window.external.tick();
window.external.tick();
}
window.onload = pageLoaded;
function WriteFromExternal(message) {
document.write("Message : " + message);
}
И это C# сторона:
private int i = 0;
public void tick()
{
invoke("WriteFromExternal", new object[] { "ticked"+ i++ });
}
public static void invoke(string method, object[] parameters)
{
mainInterface.browser.InvokeScript(method, parameters);
}
И по-прежнему бросает тот же ошибка (после первого вызова), это говорит о том, что не имеет значения, откуда она называется, i nvoking функция из C# будет вызывать эту ошибку, если она выполняется более одного раза.
Попробуйте вызвать ту же функцию дважды с самой веб-страницы, чтобы гарантировать, что нет ничего плохого со страницей – TGH
Обновленный пост с секцией редактирования с тестом что гарантирует, что на странице нет ничего плохого. Сама страница чрезвычайно проста, только голова, тело и javascript. –