2010-08-30 110 views
1

基本上,我想等待IE保存對話框打開,然後運行下一行JavaScript。您如何知道何時從JavaScript開始下載?

喜歡的東西:

`window.open(URL,"_self",...);` 

window.alert("save dialog started");

可以這樣做?由於

GRAE

我想出了這一點:

   var iframe = document.getElementById("dFrameID"); 
       if(iframe.readyState=='complete') 
       window.close(); 

其他 等待,並再次調用它。

似乎工作正常。

這只是IE解決方案。祝FF好運。

回答

0

我還沒有測試過這個,但你可能能夠使用setTimeout(...)去那裏。我已經使用它(僅在IE中)等待打印預覽對話框關閉。

訣竅是在這五個循環之間有足夠的時間等待一個循環(例如五次)以保證保存對話框已經出現。一旦對話框出現,所有的JavaScript處理應該凍結。然後,當這個盒子關閉時,javascript會再次啓動,並且你的setTimeout處理程序將會執行。

再一次,我不知道這是否會實際工作,它可能會根據您使用的瀏覽器而有所不同。由於您的下載窗口和警報窗口是分開的,因此也很複雜。

+0

...但有用戶選擇取消... – donohoe 2010-08-30 20:08:21

+0

@Michael的用例。然後希望他可以檢測到頁面已經關閉(因爲取消)並做出適當的迴應。 – 2010-08-30 20:10:16

+0

@John - 也許我誤解了,但取消只會關閉對話窗口,而不是頁面。 setTimeout仍然會觸發警報,提示信息不正確。 – donohoe 2010-08-30 20:29:51

1

JavaScript和瀏覽器不會在這個級別上進行交互。

+0

告訴我有關它!大聲笑 – 2010-08-30 21:05:58

0

在你指出「FF祝你好運」時,瀏覽器支持什麼的區別是問題所在。

如果您正在尋找來自同一服務器上託管的Iframe的完整內容。你可以在iframe文件上有一個腳本與父類進行通信... IE parent.yourfunction(); ...如果域不相同,則在幀或Iframe之間不允許通信。

+0

它是在相同的域名,如果有幫助。 – 2011-08-04 13:26:44

+0

如果我做一些像父母一樣的事情。你的iframe函數(),我怎麼知道什麼時候觸發函數。我將不得不在iframe的文檔中觸發下載,然後以某種方式知道何時下載足夠遠以至於瀏覽器可以關閉。 – 2011-08-04 13:29:59

+0

如果您要下載的內容類型必須經過驗證,並且不會在iframe頁面的onload事件之前開始。然後你需要利用你能從主機上知道的東西。一個php需要用來下載 - 而下載活動時需要創建一個文件 - 從javascript中請求該文件會告訴你下載是活動的。 – Wayne 2011-08-15 18:35:21