2014-10-10 44 views
1

我有一個頁面按鈕和IFRAME。在IFRAME中,我正在動態加載來自不同域的PDF文件。無法打印在iframe中加載的pdf

當我嘗試使用按鈕操作打印文件我收到以下錯誤。

Uncaught SecurityError: Blocked a frame with origin "http://localhost:8080" from accessing a frame with origin "http://www.cplusplus.com". Protocols, domains, and ports must match. 

如果我從我的本地系統加載PDF文件,我打印它。

我用下面的代碼打印的iframe全文

var iframe = document.querySelector("#unofficialtranscript"); 
iframe.focus(); 
iframe.contentWindow.print(); 

任何想法,我怎麼能打印的被裝載到這是對其他域的iframe的文件。

回答

0

我想你需要看看same origin policy。只有在接受策略的情況下,JavaScript纔會調用窗口或iframe。

您可能需要改用Postmessage API

請看看here

+0

我看到很多使用Postmessage API從主頁面發送消息到IFRAME的示例,但我的情況不同,需要打印該文件。我不知道該怎麼做 – 2014-10-10 14:52:36

0

如果父DOM和子DOM(即iframe)都來自同一個域,那麼它將正常工作。

如果不是,則使用Porthole等庫進行不同域之間的交叉通信。

演示網站:http://sandbox.ternarylabs.com/porthole/

注意:您應該可以訪問你的代碼中使用了兩個領域。