如何在asp.net webform加载时停止运行javascript函数?

时间:2015-05-08 08:08:17

标签: javascript jquery asp.net

我写这段代码是为了在地图上显示我的位置:

<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脚本函数?

1 个答案:

答案 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

我在本地测试它并且工作正常