1. 程式人生 > >WPF呼叫javascirpt:WebBrowser.InvokeScript(string scriptName, params object[] args)傳參方法

WPF呼叫javascirpt:WebBrowser.InvokeScript(string scriptName, params object[] args)傳參方法

WPF呼叫程式碼:

new WebBrowser().InvokeScript("addAreasBoundary", new object[] { new object[] { "北京市", "天津市" } });

JS程式碼:

function addAreasBoundary(areas) {
        areas = areas.toArray();轉換成js陣列
        alert(areas);

}

在JS函式如上的前提下,WPF呼叫採用如下程式碼報錯:

1.new WebBrowser().InvokeScript("addAreasBoundary", new object[] { "北京市", "天津市" } );

         程式會認為呼叫的是js函式有兩個引數,故報錯。

2.new WebBrowser().InvokeScript("addAreasBoundary", new object[] { new string[] { "北京市", "天津市" } });

         js只能識別VBArray和Variant objects,所以c#的string陣列傳入js後不能通過js的.toArray()方法轉換成js陣列,故報錯。

3.new WebBrowser().InvokeScript("addAreasBoundary", new object[] { new object[] { 自定義物件例項, 自定義物件例項} });

         純js無法操作自定義物件,故報錯。

以上純屬個人觀點,如果有誤,歡迎批評指正。

參考:https://social.msdn.microsoft.com/Forums/vstudio/en-US/c950a3c2-d498-47ca-b54e-b18d55666595/webbrowserinvokescript-parameter-question