关闭谷歌地图的infowindow.open(map)异步行为
Turn off google map's infowindow.open(map) asynchronous behaviour
我有一个谷歌地图应用程序,点击地图上的一个地区会创建信息窗口。
下面是我的代码结构:...
var infowindow = new google.maps.InfoWindow();
google.maps.event.addListener(MapArea, "click", showTB);
function showTB () {
...
contentElement = //complicated table with buttons etc
infowindow.setContent(sContentString);
infowindow.setPosition(event.latLng);
infowindow.open(map);
//contentElement dom element manipulations, such as:
$("#table_row").css({background: "#8af"});
}
这里的问题是末尾的dom元素操作通常不执行。我的猜测是infowindow.open(map)
是异步的,并且它通常只在dom元素操作部分之后完成执行,因为html元素还不存在,所以没有执行。在infowindow.open(map)
之后放置一个警告语句通常会导致最后一段代码执行,假设是由于延迟造成的。
所以我怎么能确保任何代码只执行后infowindow.open()
已经完成执行?
我能让它同步吗?还有别的办法吗?我不只是想添加延迟函数,因为那样要么很慢要么不可靠。
等待infowindow上的'domready'事件
代码:domready |无|当包含InfoWindow的内容时触发此事件附加到DOM。如果您正在构建您的动态信息窗口内容
infowindow.setContent(sContentString);
infowindow.setPosition(event.latLng);
infowindow.open(map);
google.maps.event.addListener(infowindow,'domready', function() {
//contentElement dom element manipulations, such as:
$("#table_row").css({background: "#8af"});
});
相关文章:
- esri javascript异步打印
- JavaScript异步问题
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 异步facebook功能
- 异步并行错误
- 在Redux中,我应该在哪里编写复杂的异步流
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- 使用map来检查是否为真'不起作用
- 角度异步http自动完成
- 如何从SeleniumWebdriver获取异步Javascript响应
- 如何使用异步调用更改工厂的变量
- 回调函数中传递参数的困难(Google Map API Markers)
- 在等待异步任务时永久循环
- 如何在异步函数中使用javascript对象
- 调用后不异步Ajax忽略函数
- 节点.JS异步并行混淆 |Async.map 返回的内容
- 等待 array.map 等待中的异步进程
- 异步函数在 Async.map 中的恢复结果
- 关闭谷歌地图的infowindow.open(map)异步行为
- Array.map()中的Promises的JavaScript异步/等待