我通过 InvokeScript 使用浏览器控件的 WPF 变体从 C# 调用 javascript 函数。
我可以毫无问题地调用我的函数一次。但是当我第二次调用它时,它会引发以下错误:
未知名称。(来自 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);
}
我可以通过 javascript 从页面调用 C# 函数并从 C# 调用,只是不能再次调用。不管我调用什么函数。
我不明白为什么它会第二次失败。
谢谢
编辑 :
做了以下测试(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);
}
并且仍然抛出相同的错误(在第一次调用之后),这表明从哪里调用它并不重要,如果多次调用从 C# 中的函数将抛出此错误。