当前位置:  开发笔记 > 编程语言 > 正文

如何在Safari/Chrome中从javascript打印IFrame

如何解决《如何在Safari/Chrome中从javascript打印IFrame》经验,为你挑选了4个好方法。

有人可以通过Safari/Chrome中的javascript调用帮助我打印IFrame的内容.

这适用于Firefox:

$('#' + id)[0].focus();
$('#' + id)[0].contentWindow.print();

这适用于IE:

window.frames[id].focus();
window.frames[id].print();

但我无法在Safari/Chrome中使用任何功能.

谢谢

安德鲁



1> Andrew Bullo..:

这是我完整的跨浏览器解决方案:

在iframe页面中:

function printPage() { print(); }

在主页面中

function printIframe(id)
{
    var iframe = document.frames
        ? document.frames[id]
        : document.getElementById(id);
    var ifWin = iframe.contentWindow || iframe;

    iframe.focus();
    ifWin.printPage();
    return false;
}

更新:自从我遇到这个问题以来,许多人似乎在发布的IE版本中遇到了问题.我现在没有时间重新调查,如果你卡住我建议你阅读这整个帖子中的所有评论!


@AndrewBullock对于那些即使在使用你的脚本时仍然面临问题的人,我可以建议你添加一个注释来检查doctypes和html标题.我的父和iframe页面都使用html5boilerplate(所以html5和顶部的一些条件)和IE拒绝打印iframe(它总是打印父级)当我将任一页面更改为xhtml并删除条件,然后iframe没有父母正确打印.为什么哦为什么总是只有IE导致这样的头痛!! :)如果人们发现你的脚本不起作用,可能会有一个指向这个区域的指针.
咩血腥!!

2> Diodeus - Ja..:

将打印功能放在iframe中并从父级调用它.

IFRAME:

function printMe() {
  window.print()
}

父:

document.frame1.printMe()


你是如何让document.frame1工作的?我不得不使用它:document.getElementById('frame1').contentWindow.printMe()
使用NAME属性,而不是ID.
它在IE8中不起作用.它正在打印所有内容(也在iframe之外).任何想法请...

3> M.W. Felker..:

我使用了Andrew的脚本,但在调用printPage()函数之前添加了一个部分.iframe需要焦点,否则它仍将在IE中打印父帧.

function printIframe(id)
{
    var iframe = document.frames ? document.frames[id] : document.getElementById(id);
    var ifWin = iframe.contentWindow || iframe;
    iframe.focus();
    ifWin.printPage();
    return false;
}

不要感谢我,是安德鲁写的.我刚做了一个tweak = P.


这可以在android等移动设备上使用吗?谢谢。

4> serdar..:

除了Andrew和Max的解决方案之外,使用iframe.focus()导致打印父框架而不是在IE8中仅打印子iframe.更改该行修复它:

function printIframe(id)
{
    var iframe = document.frames ? document.frames[id] : document.getElementById(id);
    var ifWin = iframe.contentWindow || iframe;
    ifWin.focus();
    ifWin.printPage();
    return false;
}

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有