我從C#使用瀏覽器控件的WPF變體通過InvokeScript調用JavaScript函數。WPF瀏覽器拋出錯誤
我可以調用我的函數一次沒有任何問題。但是當我第二次調用它時,它會拋出以下錯誤:
未知名稱。 (從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#調用,只是不能再次調用。無論我打電話給什麼功能。
我不明白爲什麼它會第二次失敗。
謝謝
編輯:
做了以下測試(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#中調用函數將拋出此錯誤,如果不止一次。
嘗試從網頁本身調用同一個功能兩次,以確保沒有什麼不對的頁面 – TGH
更新後與測試一個編輯部分確保頁面沒有任何問題。該頁面本身非常簡單,只有頭部,身體和JavaScript。 –