2017-08-29 129 views
3

所以,近期由於Chrome的更新阻止使用JavaScript直接被打開一個數據URL:「不允許導航頂部框架來傳輸數據的URL」,我有一些代碼,我需要修改。我有一個使用mPDF生成PDF的ajax調用,將它發回64位 - 並且應該在新選項卡中打開。這一直工作。然而,由於這個問題,我現在要做的是在新窗口中將該PDF加載到iFrame中以避免該錯誤。這是我有什麼:谷歌瀏覽器 - 在iframe PDF下載不工作

$('.print-order-pdf').click(function(){ 

    var orderNumber = $(this).attr('order') 
    var data = { 
     pdfnonce: pdfAjax.pdfnonce, 
     action: 'getOrderPDF', 
     orderNumber: orderNumber, 
    } 
    var win = window.open('', '_blank'); 
    $.post(pdfAjax.ajax_url, data, function(return_url){   
     win.document.write("<iframe id='pdf' src='"+ return_url +"'></iframe>"); 
     win.document.write("<style> html, body{ overflow:hidden; margin:0; } #pdf{ width:100%; height: 100%; }</style>"); 
    }); 

}); 

(這是一個wordPress Ajax調用)。無論如何 - 這一切都可以運行,並且打開PDF的新頁面。問題是 - 在Chrome中,作爲PDF控件一部分出現的下載鏈接不再有效。我可以打印,旋轉,但不能下載文件。我已經在Firefox中進行了測試,沒有觸發下載的問題。用於PDF窗口的Chrome控制檯完全不顯示任何錯誤。有任何想法嗎? Chrome中是否有特定的內容阻止從iFrame內下載?爲什麼?有沒有辦法解決它?

非常感謝。

+0

我不能重現此(60穩定和62金絲雀,MAC)。 –

+0

嗯......好吧有趣 - 我用60和穩定以及和有其他人在這裏嘗試 - 他們看到了同樣的問題。所以,我觸發這個標籤的方式肯定是錯的 - 但我不知道是什麼。附件是檢查員的截圖。控制檯中沒有任何東西,這就是嵌入和下載圖標的樣子。這裏有什麼東西嗎? https://www.screencast.com/t/WlqHqJTJ50K – JBoss

回答

1

我的情況正是如此! 我使用的Chrome版本61.0.3163.100。 我想這是一些瀏覽器的漏洞,但我沒有找到關於谷歌的論壇東西。 我不確定是否直接下載文件,但不想放棄Chrome瀏覽器。

暫時,我已經找到了一個醜陋和不雅的解決方案,直到我有一個明確的答案。我創建在所生成的窗口中的鏈接:

var newWindow = window.open("", "PDF", 'dependent=yes,locationbar=no,scrollbars=no,menubar=no,resizable,screenX=50,screenY=50,width=850,height=800'); 
newWindow.document.write(
'<html><body><center>' + 
'<a title="Download File" style="font-family: \'Verdana\';color: #333;text-decoration: none;font-weight: 600;" download="File.PDF" href="data:application/pdf;base64,' + base64 + '">Download File</a>' + 
'</center><br>' + 
'<object width=100% height=100% type="application/pdf" data="data:application/pdf;base64,' + base64 + '">' + 
'<embed type="application/pdf" src="data:application/pdf;base64,' + base64 + '" id="embed_pdf"></embed>' + 
'</object></body></html>'); 
newWindow.window.focus(); 
相關問題