繁体   English   中英

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

[英]How can I pass array from wpf control to javascript function in webbrowser control?

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

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];           
}

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

我应该更改什么才能接收所有元素?

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

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

在那里。 从我所看到的情况来看,没有一种干净的方法可以执行您想要的操作。 一些建议使用JSON,然后在JavaScript中评估JSON。 我不喜欢这个主意,因为您必须使用eval() ,这让我感到不对。

这是我的建议。 如果按原样传递它,然后通过arguments变量访问它,该怎么办? 有关更多信息,请参见Arguments对象 基本上:

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

这不是理想的方法,但是它会让您做自己想做的事情。 我不相信还有很多其他选择。 也许有人知道更干净的方法,但这应该对您有用。 由于没有手持WebBrowser的WPF应用程序,因此我没有机会进行全面测试,但是我认为这可以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM