我需要打印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();
});
您要处理的错误与跨域保护和同源策略有关。
在您的情况下,如果将此iframe嵌套在另一个我们可以称为代理iframe的本地iframe中,则可以打印跨域iframe。
由于代理iframe是本地的并且具有相同的来源,因此您可以毫无问题地进行打印,并且还会打印跨域iframe。
参见以下示例:
index.html(容器)
$(function() {
var url = 'proxy.html'; // We're not loading the PDF but a proxy which will load the PDF in another iframe.
var iframe = $('<iframe src="' + url + '"></iframe>').appendTo($('#main'));
iframe.on('load', function(){
iframe.get(0).contentWindow.print();
});
});
proxy.html(代理)
<body>
<iframe src="http://ANOTHER_DOMAIN/PDF_NAME.pdf"></iframe>
</body>
使用此解决方案,您不再遇到跨域问题,可以使用print()函数。您需要处理的唯一事情是将PDF网址从容器传递到代理的方法,以及检测何时实际加载带有PDF的iframe的方法,但这取决于您使用的解决方案/语言。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句