Mah*_*esh 3 javascript browser wpf google-maps wpf-controls
我是WPF的新手.我在我的wpf应用程序中使用"WebBroswer"来渲染Google地图.我有一个googlemap.htm页面,它包含一个初始化(lat,log)JavaScript函数.现在我想从带有lat和log参数的.xaml.cs文件中调用此函数.
Googlemap.htm
<script>
function initialize(lat, log) {
var mapProp = {
center: new google.maps.LatLng(lat, log),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用WebBrowser.InvokeScript方法:
this.WebBrowser.InvokeScript("initialize", 1, 2);
Run Code Online (Sandbox Code Playgroud)
或者你也可以像这样重写你的JavaScript代码:
function initialize(lat, log) {
var mapProp = {
center: new google.maps.LatLng(lat, log),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
}
document.myfunc = initialize; // expose it to the document scope
google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)
所以现在你可以myfunc从C#代码访问:
private void WebBrowser_OnLoadCompleted(object sender, NavigationEventArgs e)
{
dynamic document = WebBrowser.Document;
document.myfunc(1, 2);
}
Run Code Online (Sandbox Code Playgroud)
你也可以myfunc不用dynamic关键字调用:
private void WebBrowser_OnLoadCompleted(object sender, NavigationEventArgs e)
{
var document = this.WebBrowser.Document;
document.GetType().InvokeMember("myfunc", BindingFlags.InvokeMethod, null, document, new object[] {1, 2});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9528 次 |
| 最近记录: |