在 IE 中打印 iframe

2024-02-16

我有一个按钮,可以将要打印的报告加载到 div 内的“不可见”iframe 中并打印该 iframe;用户按下按钮即可打印报告(包含在不同的页面上),除了打印对话框之外,无需更改页面或任何视觉干扰。它适用于 Chrome 和 Firefox,但不适用于 IE。在 IE 中,父页面被完整打印,并且一个微小的混乱的 iframe 被插入到页面底部(我正在加载 iframe 的地方)。

这是没有内容的空 div,它就在那里,所以我有一个带有 ID 标记的位置,可以使用 Javascript 设置样式和粘贴内容:

<div id="printerDiv"></div>

这是 javascript 函数,我的按钮的 onClick 该函数会触发并将我的打印页面插入到 PrinterDiv 内的 iframe 中,加载此页面后打印:

function printPage(url) {
    var div = document.getElementById("printerDiv");
    div.innerHTML = '<iframe src="'+url+'" onload=this.contentWindow.print();>
        </iframe>';
 }

这是隐藏 div 的 CSS。我使用绝对定位将其移出可见屏幕区域。我曾经使用 display:none,但 Firefox 无法打印这种样式的 iframe:

#printerDiv{
    position:absolute;
    left:-9999px;
}

When I print in IE it prints the full page, and then at the bottom, where #printerDiv is, I get this little iframe: enter image description here

因此内容正在加载,但它不仅仅打印 iframe,也没有正确隐藏 iframe。我插入的任何其他内容#printerDiv正确隐藏,只有 iframe 会这样显示。

我已经尝试了所有解决方案这个问题 https://stackoverflow.com/questions/1261561/printing-a-hidden-iframe-in-ie在我的 Javascript 函数中:使用self.print,使用document.parentWindow.print,将 PrinterDiv 上的样式更改为 0px 高度/宽度也不起作用。

我欢迎不使用 iframe 的解决方案(IE 似乎有很多问题),但我需要这种能力来加载屏幕上不可见的内容并通过按钮直接打印。


就我而言,解决方案是not隐藏我想要打印的 iframe。如果我隐藏它(使用显示:无;可见性:隐藏等),父页面将始终打印。

我没有实际隐藏框架,而是将其设为 10x10 并且无边框。现在这可以工作了(使用延迟技巧)。

示例代码:

    <script type="text/javascript">
    function printFrame(frameId, targetContent)
    {
        var doc = $('#'+frameId).get(0).contentWindow.document;
        var $body = $('body',doc);

        $body.html($('#'+targetContent).html());

        setTimeout(function(){
            $('#'+frameId).get(0).contentWindow.focus();
            $('#'+frameId).get(0).contentWindow.print();            
        }, 1000);        
    }
</script>

HTML:

<div id="contentToPrint">
I just want to print this stuff
</div>
<iframe src="about:blank" id="printframe" style="border:0" width="10" height="10"></iframe>

打印按钮:

<a href="javascript:printFrame('printframe','contentToPrint')">Print frame</a>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 IE 中打印 iframe 的相关文章

随机推荐

  • SignalR:如何停止在页面重新加载时创建新连接

    您好 我正在开发一个聊天应用程序以及应用程序中的一些其他页面 一旦我登录 我就会维护用户的会话 我的主要目的是 每当其他用户连接到服务器时 用户应该收到通知 我面临的问题是每当我导航到应用程序中的其他页面时 连接就会丢失 如何停止此行为并继
  • 子类中抛出异常的标准是什么

    到目前为止我所知道的是 子类如果重写超类方法应该抛出相同的异常或异常的子类 例如 这是对的 class SuperClass public int doIt String str Integer data throws ArrayIndex
  • 在 Rails 模型中编写大型 SQL 的更好方法?

    使用了很多之后Arel that Rails提供糖代码 我遇到问题时 处理大型且复杂的 SQL 查询 但我无法很好地处理Arel方法 我喜欢Arel对于小事情 但是当事情变得混乱时 我更喜欢将代码分开 那么 对于我应该如何治疗我的大 有什么
  • ES2015/2016 'typeof varName === 'undefined` 的方式?

    我现在正沉迷于 ES2015 的豪华体验中 有几个项目 我想知道我是否可以摆脱令人讨厌的拐杖来检查undefined在新仙境里 有没有更短但仍然准确的方法typeof varName undefined ES2015 已经有了 我当然可以使
  • 当您在浏览器中输入 URL 时会发生什么[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有人可以告诉我 从我在浏览器中输入 URL 到我在浏览器上看到该页面 幕后发生了什么 详细说明该过程将会有很大帮助 注意 这是一个非常粗糙和过于简单化
  • Boost Log 更改默认logging::core 格式化程序?

    我正在使用 Boost v1 54 我想简单地更改logging core的默认接收器格式 但还没有找到方法 在里面日志记录格式 http www boost org doc libs 1 54 0 libs log doc html lo
  • 嵌套异常是 java.sql.SQLException:无法为连接 URL 'null' 创建类 '' 的 JDBC 驱动程序 - Spring MVC JNDI 问题

    我正在开发 SpringMvcJndiDataSourceXML 示例 在此示例中 我面临以下错误 我找到了很多链接 但没有一个对我有用 虽然这是重复的问题 但我仍然想得到以下问题的答案 请指导 org springframework jd
  • javascript 命名函数表达式 - 范围可访问性[重复]

    这个问题在这里已经有答案了 我正在跟进John Resig 的 JS 忍者秘密幻灯片 http ejohn org apps learn 11我发现了一些我不太明白的东西 下面的代码定义了一个命名函数表达式 var ninja functi
  • 如何在KONG中实现外部身份验证?

    我在用着KONG API网关 https konghq com 并且我想将 JWT 身份验证实现为单独的微服务 不使用 KONG 插件 现在我可以轻松地使用 KONG 注册此服务 以便用户可以注册和登录 假设经过身份验证的用户发送了一个请求
  • 将 MS Office Communicator 状态指示器添加到 JSP 中

    我想将 MS Office Communicator 状态指示器添加到我的 Java 应用程序 jsp 中 如果您的目标是 Windows 平台 最简单的方法是在客户端完成所有操作 只要客户端运行 IE Office 2003 或更高版本以
  • 当输入句子没有标点符号时使用的句子分割工具(已标准化)

    假设有一个类似 给我找一些爵士音乐并播放它 的句子 其中所有文本都已标准化并且没有标点符号 语音识别库的输出 除了连接词分割的简单方法之外 还有哪些在线 离线工具可用于进行 句子分割 Input 给我找一些爵士乐并播放 Output 给我找
  • 如何在node.js中生成PDF

    我想生成一个模块 该模块将通过将输入作为我的发票来生成 PDF 并且该 PDF 文件会自动发送给客户的邮件 ID 在第一步中 我得到了一些代码并尝试生成 PDF 该代码工作正常 我能够生成 PDF 但我无法打开该文件 对于代码 我使用此链接
  • 调试应用程序中的巨大内存泄漏

    我的应用程序刚刚泄漏了 1 5GB 内存 我想因为我没有大量可用的数据 所以我假设它泄漏了内存 但它也可能只是保留它 我目前正在使用 perfmon 收集尽可能多的信息 以尝试了解可能导致问题的原因 目前我没有太多线索 希望能从这里的人们那
  • 检查xml节点是否存在?

    我想检查给定的节点是否存在 xml文件 我尝试 string language node SelectSingleNode language null node SelectSingleNode language Value en en U
  • NetBeans + 多个 php 版本 + 没有 PEAR 的 phpUnit

    我的问题有点复杂 我在 IIS 上有多个 php 版本 每个php项目都有自己的php版本和域名 例如 www webshop loc 我正在通过NetBeans开发项目 并且我想使用TDD作为开发过程 我的问题是 如何在不安装 PEAR
  • .NET core 使用 Xunit + Autofixture + Moq 编写更好的单元测试

    在 NET Core 中进行单元测试 我使用 Xunit Moq 和 Autofixture 但即使有了它们 我发现我的单元测试变得复杂并且需要时间 也许有人可以告诉我是否有任何方法可以缩小这个测试的规模 Fact public async
  • Angular:$broadcast 和 $emit 按值或引用发送消息对象?

    给出以下代码 var msg field1 val1 field2 val2 more fields scope broadcast EventName msg 事件消费者接收到一个指向msg或副本 事件消费者接收一个指针到事件数据 例如
  • HTML 中是否还有其他有用的空白代码,例如用于半空格、全空格、全空格等的  ?

    想知道是否还有其他代码可用于 HTML 新闻通讯 我会使用单元格填充或边距 但我对 HTML CSS 很陌生 我找不到确实影响主标题行及其下方子标题的更改 作为一封电子邮件 我很犹豫是否要使用 CSS 来实现它 因为我不知道电子邮件客户端不
  • PHPMailer 安全吗

    我知道这可能不是一个简单的问题 但我正在开发几个 Web 表单 并且想要一个 PHP 库 我可以用它来发送邮件并让它自动清理数据 我正在查看 PHPMailer 它看起来设置起来非常简单 PHPMailer 是一个安全库 可用于防止我的表单
  • 在 IE 中打印 iframe

    我有一个按钮 可以将要打印的报告加载到 div 内的 不可见 iframe 中并打印该 iframe 用户按下按钮即可打印报告 包含在不同的页面上 除了打印对话框之外 无需更改页面或任何视觉干扰 它适用于 Chrome 和 Firefox