我需要打印一个 PDF 文件…但是我收到一个错误
有解决方法吗?我只需要一键打印PDF文件
错误:
Uncaught SecurityError: Blocked a frame with origin "https://secure.domain.com" from accessing a frame with origin "https://cdn.domain.com". Protocols, domains, and ports must match.
代码:
var iframe = $('<iframe src="'+url+'" style="display:none"></iframe>').appendTo($('#main')).load(function(){
iframe.get(0).contentWindow.print();
});
原文由 clarkk 发布,翻译遵循 CC BY-SA 4.0 许可协议
您处理的错误与跨域保护和同源策略有关。
在您的情况下,如果您将此 iframe 嵌套在我们可以称为代理 iframe 的另一个本地 iframe 中,则可以打印跨域 iframe。
由于代理 iframe 是本地的并且具有相同的来源,因此您可以毫无问题地打印它,它还会打印跨域 iframe。
请参阅下面的示例:
index.html(容器)
proxy.html(代理)
使用此解决方案,您不再有跨域问题,您可以使用 print() 函数。您唯一需要处理的是一种将 PDF url 从容器传递到代理的方法,以及一种检测带有 PDF 的 iframe 何时实际加载的方法,但这取决于您使用的解决方案/语言。