C#如何把数组传值给JS函数?

jhdxhj 2014-11-17 08:17:02
在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为空或不是对象,是怎么回事?

...全文
681 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smthgdin_020 2014-11-18
  • 打赏
  • 举报
回复
引用 4 楼 jhdxhj 的回复:
[quote=引用 3 楼 LanMangFeiGe 的回复:] 直接写成: webBrowser1.Document.InvokeScript("add", arrSong1, arrSong2);
直接提示 InvokeScript 函数没有三个参数的重载[/quote] 那就只用前2个参数试试看。
宝_爸 2014-11-18
  • 打赏
  • 举报
回复
我试了下,下面的代码可以运行

<!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"} );
        }
jhdxhj 2014-11-18
  • 打赏
  • 举报
回复
有没有高人知道?
jhdxhj 2014-11-18
  • 打赏
  • 举报
回复
引用 3 楼 LanMangFeiGe 的回复:
直接写成: webBrowser1.Document.InvokeScript("add", arrSong1, arrSong2);
直接提示 InvokeScript 函数没有三个参数的重载
Pigeon汪 2014-11-18
  • 打赏
  • 举报
回复
直接写成: webBrowser1.Document.InvokeScript("add", arrSong1, arrSong2);
jhdxhj 2014-11-18
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
var arrSong1 = "[121.48, 120.69]"; var arrSong2 = "[31.22, 30.40]"; 看看
也不行呢,这个传值怎么回事呢
layershow 2014-11-18
  • 打赏
  • 举报
回复

// 首先去创建两个 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});
最好的办法还是修改一下脚本(如果页面是自己做的),别来回传这么复杂的东西
threenewbee 2014-11-17
  • 打赏
  • 举报
回复
var arrSong1 = "[121.48, 120.69]"; var arrSong2 = "[31.22, 30.40]"; 看看

111,088

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧