2014-10-10 15 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/

注意:您应该可以访问你的代码中使用了两个领域。