2011-05-25 51 views
14

我有谷歌瀏覽器的iframe onLoad事件的問題。我創建了一個iframe併爲其「src」屬性設置值以從服務器獲取文件。在服務器正在處理時,顯示一個等待框,直到客戶端獲得返回的文件。我嘗試使用iframe的onLoad事件來檢測客戶端何時獲取文件以關閉該等待框,但在Google Chrome上,該事件處理程序不起作用。
與Firefox,當客戶端獲得一個文件,「保存到」彈出會自動顯示和事件「負載」將被解僱,但這無法在Chrome發生。
你能告訴我如何處理這個問題呢?非常感謝!Chrome獲取下載文件時會觸發哪個JS事件?

回答

13

我碰到這個確切的問題。事實證明Chrome在文件下載時在iframe中完全沒有觸發事件。

由於沒有需要注意的事件,並且您正在返回一個文件(與任何內聯內容相關),所以我不得不在幾秒鐘後檢查iframe的內容,如果它是空的,那麼假定沒有錯誤並且結果處理正確。如果它包含數據(如果有錯誤,我的服務器將返回JSON),然後相應地處理錯誤數據。

+0

我想這就是插件從這個答案做什麼http://stackoverflow.com/a/20973242/1175496 – 2015-02-20 19:38:31

+0

請參閱以下帖子的示例代碼:https://stackoverflow.com/questions/12076494/ onload事件,在-I幀 - 不工作,如果的iframe具備的,非HTML文檔,在-SRC-PDF-或-T/12190776#12190776。我花了一點時間才弄清楚其他地方的其他一些答案,這些答案指的是使用'onload'事件,其中實際上是錯誤的。這可能與最新的網頁瀏覽器更符合規範有關。 – RZet 2017-10-20 09:50:10

1

我解決這個問題的方法是設置一個cookie(完成= 0),當頁面將要加載iframe時,我使用javascript將iframe放到頁面上,並更改此值當iframe的源代碼腳本成功運行時(cookie = 1),cookie。

然後我用一個簡單的Ajax調用了setTimeout的返回cookie的值,當值是1,我可以觸發onload事件(對所有其他瀏覽器上運行)。

+1

剛剛完成評論。你看到這個[計算器上後(http://stackoverflow.com/questions/1106377/detect-when-browser-receives-file-download)? – 2012-10-11 08:34:29

相關問題