iframe加載onload之坑

需求:點擊按鈕,下載一個文件,因爲種種緣由,須要藉助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('下載失敗,請縮小查詢範圍後從新嘗試!');
        }
    };
相關文章
相關標籤/搜索