无法使用javascript为不同的窗口实例设置计时器?

时间:2016-07-20 12:43:04

标签: javascript timer

我有一个页面打开一个弹出窗口,弹出窗口根据查询字符串参数通过处理页面上的数据创建谷歌地图,创建地图后,它使用webmethod / ajax保存到指定位置,弹出窗口使用settimeout函数自动关闭

这仅适用于单个请求/单个弹出窗口。

我有很多行说10行我打开每行的弹出窗口并希望关闭使用计时器(仅在成功创建/保存img之后)。

MainPage.aspx

//someloop here for iterating rows
   foreach(..)
     {
       CallMap(packageid, latitudelangitude);
                        Thread.Sleep(1000);
     }
   int i = 1;
    protected void CallMap(string packageid, string latitudelangitude)
    {
        string url = "http://localhost:58715/mymap.aspx?pkg=" + packageid + "&data=" + latitudelangitude;// +"&t=" + i;
        string fullURL = "window.open('" + url + "', '_blank', 'height=600,width=1000,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes,titlebar=no' );";
        ClientScript.RegisterStartupScript(this.GetType(),
   "newWindow" + i++, String.Format("<script>" + fullURL + "</script>", string.Empty));
   }

mymap.aspx

  $(document).ready(function () {

        initialize();
       setInterval(function () { window.close() }, 2000);
    });

这里,计时器同时对所有10个窗口都超时。如何为同一页面的不同窗口实例重置不同的计时器?

1 个答案:

答案 0 :(得分:0)

由于

,计时器会在同一时间关闭窗口
setInterval(function () { window.close() }, 2000);

当所有窗口使用相同的启动脚本ClientScript.RegisterStartupScript打开时,它们将同时打开并以相同的间隔(即2000毫秒)关闭。取决于您的要求,您需要以不同方式打开窗口或在另一个事件上关闭它们。目前,您的要求

  

想要关闭使用计时器(仅在成功创建/保存img之后)。

似乎无效,因为在“已成功创建/保存img”的代码中没有触发器。