我正在开发一个项目,我需要与多浏览器兼容,我遇到一个问题,导致Adobe Reader打印对话框被激活并显示在IE以外的所有其他浏览器中。我使用像这样的对象标签将PDF嵌入到broswer中:
<object id="pdfObj" type="application/pdf" style="width:60%;height:95%;position:relative;top:2%;left:0%;right:10%;bottom:10%;margin:0px;padding:0px;border:0px;" data="PDFView.aspx"></object>
我使用jQuery捕获打印链接的点击:
$('#PrintLink').click(function () {
$("#pdfObj")[0].print();
});
这适用于IE,但是当在Firefox中运行时,Web Developer工具运行错误“$(”#pdfObj“)[0] .print不是函数”被捕获。使用Chrome,我收到错误“Uncaught TypeError:Object#没有方法打印。
有谁知道如何通过这些其他浏览器实现这一目标?你的回答将不胜感激。
詹姆斯
答案 0 :(得分:0)
我知道这是一个老问题,但过去一周我一直在寻找解决方案。问题是如果页面的URL不以www开头,Firefox将不允许您访问该元素。尝试将此脚本添加到页面顶部:
<script type="text/javascript">
if ( location.host.toLowerCase().substring(0,3) != "www" )
{
location.href = location.href.replace( /\/\//, "//www." );
}
</script>
这会将用户重定向到相同的网址,但会添加www。到了它的开始。
然后将您的pdf嵌入iframe:
<iframe id="iframe" src="myPDF.pdf" width="200" height="500"></iframe>
然后你可以使用这个javascript函数来打印PDF:
document.getElementById("iframe").contentWindow.print();
如果您需要IE和Safari的不同代码,您可以执行JavaScript检查以查看用户拥有的浏览器。 希望这有帮助,它对我有用。