在C#Web浏览器中自动化谷歌地图(正确执行javascript时出现问题)
本文关键字:javascript 执行 问题 浏览器 C#Web 自动化 谷歌地图 | 更新日期: 2023-09-27 18:17:29
不使用API
我目前正在尝试使用 C# 中的 Web 浏览器加载谷歌地图并自动专注于我当前的位置,但是,由于某种原因我无法使其正常工作。这个想法很简单。加载谷歌地图,然后执行脚本以专注于我的当前位置:
mapBrowser.Document.InvokeScript("mylocation.onButtonClick");
或者,通过 HtmlElement 调用按钮单击:
HtmlElement myLocationButton = mapBrowser.Document.GetElementById("mylocation");
myLocationButton.InvokeMember("click");
但是,当然,这些方法实际上都无法正常工作,返回的坐标是不正确的,并且地图从未真正聚焦。关于如何正确解决此问题的任何想法?在实际加载文档之前,不会调用脚本:
private void mapBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if(mapBrowser.Url.ToString() == "https://www.google.com/maps/preview/")
{
try
{
//HtmlElement myLocationButton = mapBrowser.Document.GetElementById("mylocation");
//myLocationButton.InvokeMember("click");
mapBrowser.Document.InvokeScript("mylocation.onButtonClick");
//mapBrowser.Document.InvokeScript("focus:mylocation.main");
}
catch (Exception ex)
{
MessageBox.Show("Error Invoking Script: " + ex.Message);
}
}
}
所以我不相信这是我问题的原因。更令人沮丧的是,如果我手动单击按钮,自动对焦工作正常。
任何帮助不胜感激,谢谢!
(请注意,您可能需要进入IE并允许Google地图访问您的位置才能正确复制此问题(
我有几次遇到过WebBrowser控件使用太旧版本的IE的问题。您需要修改注册表以使其使用较新版本的 IE。我尝试使用IE 8和9进行"https://www.google.com/maps/preview/",它给了我一个错误,但它适用于IE 10。
请参阅:http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version