C#怎么把数组传值给JS函数
C#如何把数组传值给JS函数?
在WINFORM中有一个 webBrowser 控件,这个控件链接的页面是 test1.htm,在test1.htm中有 一个名字叫 add1 的js函数
var arrSong1 = new[] { "121.48", "120.69"};
var arrSong2 = new[] { "31.22", "30.40" };
webBrowser1.Document.InvokeScript("add", new object[] { arrSong1, arrSong2});
js函数如下:
function add(str1,str2)
{
alert(str1.length);
}
上面的代码在运行的时候提示 length为空或不是对象,是怎么回事?
------解决思路----------------------
var arrSong1 = "[121.48, 120.69]";
var arrSong2 = "[31.22, 30.40]";
看看
------解决思路----------------------
直接写成: webBrowser1.Document.InvokeScript("add", arrSong1, arrSong2);
------解决思路----------------------
我试了下,下面的代码可以运行
C#代码
------解决思路----------------------
那就只用前2个参数试试看。
------解决思路----------------------
最好的办法还是修改一下脚本(如果页面是自己做的),别来回传这么复杂的东西
在WINFORM中有一个 webBrowser 控件,这个控件链接的页面是 test1.htm,在test1.htm中有 一个名字叫 add1 的js函数
var arrSong1 = new[] { "121.48", "120.69"};
var arrSong2 = new[] { "31.22", "30.40" };
webBrowser1.Document.InvokeScript("add", new object[] { arrSong1, arrSong2});
js函数如下:
function add(str1,str2)
{
alert(str1.length);
}
上面的代码在运行的时候提示 length为空或不是对象,是怎么回事?
------解决思路----------------------
var arrSong1 = "[121.48, 120.69]";
var arrSong2 = "[31.22, 30.40]";
看看
------解决思路----------------------
直接写成: webBrowser1.Document.InvokeScript("add", arrSong1, arrSong2);
------解决思路----------------------
我试了下,下面的代码可以运行
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
function add(str1, str2) {
alert(str1);
}
//add('aaa', 'bbb');
</script>
</head>
<body>
</body>
</html>
C#代码
private void button1_Click_1(object sender, EventArgs e)
{
string curDir = Directory.GetCurrentDirectory();
webBrowser1.Url = new Uri(string.Format("file:///{0}/HTMLPage2.html", curDir));
}
private void button2_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("add", new object[] {"22222", "ffffff"} );
}
------解决思路----------------------
那就只用前2个参数试试看。
------解决思路----------------------
// 首先去创建两个 js 里面的对象
object arrSong1 = webBrowser1.Document.InvokeScript("eval", new object[] { "new Array('121.48', '120.69')"});
object arrSong2 = webBrowser1.Document.InvokeScript("eval", new object[] { "new Array('31.22', '30.40')"});
// 然后再调用
webBrowser1.Document.InvokeScript("add", new object[] { arrSong1, arrSong2});
// 对数组操作都用 InvokeMember 的方式
arrSong1.GetType().InvokeMember("push", InvokeMethod, null, arrSong1, new object[] {222});
最好的办法还是修改一下脚本(如果页面是自己做的),别来回传这么复杂的东西