需求:點擊按鈕,下載一個文件,因爲種種緣由,須要藉助iframe實現。瀏覽器
實現:點擊按鈕往頁面上append一個iframe,將iframe的src設置爲文件的url路徑,實現下載。若是url不對或文件下載失敗,提示下載失敗。app
暢想:iframe.onload=function(){ //下載成功;} iframe.onerror = function(){ //下載失敗 }測試
問題:想的挺好,惋惜瀏覽器有意見。經測試,火狐及chorme都不支持onerror事件,並且,無論iframe加載是否成功,都會觸發onload事件。this
解決:奇技淫巧,經過title來判斷頁面是否正常加載。url
示例:spa
var url = $this.attr('data-url'); $('body').append('<iframe class="down-frame" id="down-frame" width="1" height="1" src="'+url+'" ></iframe>'); var downFrame = document.getElementById("down-frame"); downFrame.onload=function(e){ var ifDoc = downFrame.contentDocument||{}; var ifTitle = ifDoc.title; if ( ifTitle.indexOf("404")>=0 || ifTitle.indexOf("錯誤")>=0 ) { toastr.error('下載失敗,請縮小查詢範圍後從新嘗試!'); } };