最近在做form窗口调用百度地图api的一个小程序。
让这个webBrowser1.Document.InvokeScript()函数纠结了我半天,因为js也是刚刚接触,所以不知道问题出在哪,在这跟大家分享一下,免得走很多弯路:
首选我在dw 中谢啦 一个 function:
//公交站点对点的搜索函数,输入俩字符串来搜索,并在网页中显示。
//方法体是百度地图API DEMO中的,我修改了一下,可以用,大家要详细了解就去百度地图开发中心看吧。
//我这主要讲一下c#调用js内的函数
function bus_p2pSearch(start,ending)
{
var transit = new BMap.TransitRoute(map, {renderOptions: {map: map}})
var start;
var ending;
transit.search(start,ending);
}
下面是 c# 中的button_click事件:
private void button_bus_Click(object sender, EventArgs e)
{
string s1 = textBox_bus_start.Text.ToString() ;
string s2 = textBox_bus_end.Text.ToString();
Object[] objArray = new Object[2];
objArray[0] = s1 ;
objArray[1] = s2 ;
webBrowser1.Document.InvokeScript("bus_p2pSearch", objArray);
}
首先我们要明确的是webBrowser1.Document.InvokeScript()这个函数,括号内有调用function的名字以及要传入的参数。
参数只能有一个,如果我们需要传入多个参数,则需要将多个参数写成 一个object类型的数组,就是输入多少个参数都行,只要是function所需的参数,对应的数据类型也是对的就可以。当然,如果function所需的参数都是相同的参数类型,也可以写成相对应的数组,比如int[ ] 0 char[].........
还有一点要注意的是webBrowser1.Document.InvokeScript()内的function的名字后面不能带()。如果带括号就不能运行js 函数,我试过。