2016-07-20 45 views
-1

我有一個頁面打開一個彈出窗口,彈出窗口創建谷歌地圖取決於查詢字符串參數通過處理頁面上的數據和創建地圖後,它使用webmethod/ajax保存到指定位置,彈出窗口使用settimeout函數自動關閉。無法使用JavaScript爲不同的窗口實例設置計時器?

這隻適用於單個請求/單個彈出窗口。

我有很多行說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個窗口。如何爲同一頁面的不同窗口實例重置不同的計時器?

+0

你試過用var windowObjectReference = window.open(...)?那麼你可以調用windowObjectReference.close() –

+0

如何在c#中使用它? –

+0

仍然是同樣的問題...任何其他方式? –

回答

0

計時器關閉窗戶,由於使用相同的啓動腳本ClientScript.RegisterStartupScript打開的所有窗口,他們將在同一時間打開並在其中爲2000ms相同的時間間隔關閉,同時由於

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

。取決於您的要求,您需要打開不同的窗戶或關閉他們在另一個事件。目前,您的要求

想關閉使用計時器(只有在成功創建/保存img後)。

似乎無效,因爲在呈現的代碼中沒有觸發「成功創建/保存img」。

+0

你是什麼意思'需要打開不同的窗口'???? 我打開與不同的多個實例相同的網頁彈出... –

+0

您在同一時間「打開同一個網頁,具有不同的多個實例」,所有實例在2000毫秒內都具有與'window.close'相同的腳本 - 那麼您爲什麼期望在同一時間關閉所有窗口的其他結果呢? – Alex

+0

becoz我想爲每個窗口在2secs後自動關閉窗口。另外,如果要渲染Google地圖並將圖像保存爲所需的大小,則需要一些時間......以便每個窗口都有足夠的時間處理圖像並使用指定的大小保存二進制... 在當前情況下,在同一時間所有的窗口超時和圖像沒有得到妥善保存... –

相關問題