我可以发送一个参数,但不能发送数组。
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];
}
我只收到数组的第一个元素。
我应该改变什么才能收到所有元素?
答案 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应用程序,但我认为这将完成你所需要的。