如何在webbrowser控件中将数组从wpf控件传递给javascript函数?

时间:2015-04-28 12:24:51

标签: javascript c# wpf

我可以发送一个参数,但不能发送数组。

C#代码:

string[] mes = {"Bascketball Stadium", "New Address", "Ilya"};
this.MyWebBrowser.InvokeScript("DaveWriter", mes);

JavaScript代码:

function DaveWriter(mes){
   var arr = jQuery.makeArray(mes);         
   document.getElementById('company').innerHTML = arr[0];
   document.getElementById('address').innerHTML = arr[1];           
}

我只收到数组的第一个元素。

我应该改变什么才能收到所有元素?

1 个答案:

答案 0 :(得分:1)

非常棘手,因为InvokeScript将参数作为数组。例如,您实际上在那里传递了3个参数,而不是参数数组,mes的每个元素都是DaveWriter的一个参数。意思是,如果您将其更改为:

function DaveWriter(arg1, arg2, arg3) {
// Your code
}

它会在那里。从我所见过的,没有一种干净的方法来做你想做的事。有些人推荐使用JSON,然后在JavaScript中评估JSON。我不喜欢这个主意,因为你必须使用eval(),这让我觉得不对。

这是我的建议。如果您像往常一样传递它,然后通过arguments变量访问它。有关详细信息,请参阅Arguments object。 基本上是:

function DaveWriter(mes){ 
   document.getElementById('company').innerHTML = arguments[0];
   document.getElementById('address').innerHTML = arguments[1];           
}

它并不理想,但它可以让你做你想做的事。我不相信还有很多其他选择。也许有人知道更清洁的方式,但这应该适合你。我没有机会完全测试,因为我没有使用WebBrowser的WPF应用程序,但我认为这将完成你所需要的。