15
IE frames with iframe link download something, bug ?
Posted by YuanYuan under Html同事需要做一個下載 xls 的動作, 用 frames 切分成左選單, 右主頁內容, 在主頁內容用了 iframe 內坎在頁面來執行下載的動作, 但卻發生怪異的事, 在 IE(FF沒這個問題) 使用 iframe 的這個動作時, 卻會發生頁面上的 javascript 都失效了, 真怪. 找不到答案.
- <iframe name='downloadIFrame' height=100 style="overflow:visible;" scrolling="no" src='download.php?filepath=c:\\test\\test_12345.xls&filename=test_12345.xls'>
- </iframe>
原因是 download.php 它的的 header 用了 application/octet-stream , 而造成這個結果. 我試著用各種不同的檔案直接下載, 是沒這個問題的. 像這樣 header(’Location: test.xls’);
較怪異的是, 如果它是獨立的單一個頁面, 就沒有這個問題, 但它剛好坎在 frames 裡面, 又用了 iframe. 問你要存檔後, 就出現後續要執行的 JavaScript 完全無法作用.
估且不管他的動作流程是否正確, 最後我延用它的 jQuery 裡, 把要寫入的 $(document).ready 之中, 再把要坎入的 iframe 寫到($(”xxx”).html(要寫入的 iframe內容))某個隱藏的 div id 裡即可. 我想像了一下, 就叫當 docment 都 ready 了, 再往下 go, 真沒想到卻解決了. 超級奇怪的問題.
最後, 我建議他可以考慮用 ajax 做下載處理, 一來它的動作有 respone , error, success 的相關狀態, 對於需要確認某些動作後才能往下走的網頁設計, 其實較為正確也方便. 不然, 利用視窗或是 iframe 的下載連結方式, 通常會有一些問題, 像是該做的還沒做完, 卻叫你開始做一個動作的混亂.