我写这段代码是为了在地图上显示我的位置:
<script src="http://maps.googleapis.com/maps/api/js"></script>
<script>
function initialize(x, y) {
alert(x);
alert(y);
var mapProp = {
center: new google.maps.LatLng(x, y),
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>
up代码在页面加载或回发时运行初始化函数,但是我为asp按钮编写了这段代码:
Page.ClientScript.RegisterStartupScript(this.GetType(), "beh", "initialize(38.076306,46.279637);", true);
我希望当按钮触发时,向函数发送值和java脚本函数改变地图位置,它的工作,但当按钮触发,功能运行,并在web表单加载时再次运行!,并在第一时间显示正确位置,但是当页面加载事件发生时,向函数发送空值并显示空位,我认为在asp按钮触发时运行java脚本函数,并且在页面加载时不运行java脚本函数?
答案 0 :(得分:0)
代码的问题是代码块的执行顺序。根据{{1}}:
通过ClientScriptManager.RegisterStartupScript
添加的代码的执行时间
RegisterStartupScript方法添加的脚本块在页面完成加载时但在页面的OnLoad事件被引发之前执行。
因此,您可以通过在msdn
标记中添加boolean variable
来解决您的问题(在网页加载时执行此标记),最初将其设置为script
并将其更改为false
中的true
(在页面加载完成后执行)。然后在button click handler
事件侦听器中,检查变量是否为window.onload
。如果是,您可以初始化地图。
因此,您的false
会改为:
javascript
和你的<script>
var isButtonClick = false;
function initialize(x, y) {
var mapProp = {
center: new google.maps.LatLng(x, y),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
}
google.maps.event.addDomListener(window, 'load', function () { if(!isButtonClick)initialize(0, 0) });
</script>
:
button click handler
我在本地测试它并且工作正常