【问题标题】:Trapping CTRL + P in javascript and calling a custom function for printing在javascript中捕获CTRL + P并调用自定义函数进行打印
【发布时间】:2010-08-10 07:25:42
【问题描述】:

我有一个网页,可以在其中快速显示帐单信息。此弹出窗口是 DIV 而不是新窗口。 在那个弹出窗口中有两个div,一个是按住打印和关闭按钮 另一个是持有 iframe。

那么原因是当点击打印按钮时,iframe 的内容被打印出来,这样打印和关闭按钮就不会被打印出来。就像……

<div id='popupandcenterscreen'>
<div>... print and close buttons</div>
<div><iframe></div>
</div>

因此,它是一个列表,其中每个条目在单击时都有一个帐单链接,会显示弹出窗口,其中加载了一个 iframe 以显示帐单信息。

当用户点击打印按钮时,我们只打印 iframe 的文档内容。

但是当用户使用 CTRL + P 时,整个窗口包括背景父窗口和这个弹出 div 被打印出来。

我的想法是在弹出窗口打开时捕获 ctrl+p 并仅打印 iframe 内容。

这怎么可能?

【问题讨论】:

    标签: javascript javascript-events


    【解决方案1】:

    我认为更好的解决方案是通过 CSS 中的 @media 规则控制渲染,或者根据媒体类型包含不同的样式表。然后,您可以使用 display 之类的 CSS 属性来隐藏某些元素以进行打印,甚至可以赋予它们不同的大小和位置。

    【讨论】:

    • 只是想指向一篇描述这个话题的文章。 alistapart.com/articles/goingtoprint
    • +1 这正是打印样式表的用途。不要试图用不可靠的 JavaScript 来破解它。
    • 好的。我认为这将是 10 行脚本的问题,我觉得这比用 css 修复容易。
    • 但这并不容易。首先,您不知道某个用户代理使用什么组合键进行打印。其次,用户代理可以提供调用打印命令的其他方式(例如单击菜单)。 javascript 没有标准化的方法来捕获打印命令,这是有充分理由的。只需为用户代理提供足够的提示以产生良好的输出,然后让它完成工作。
    • 哦。嗯嗯。是的。这是正确的。美好的。然后......无论如何我做了一个替代方案。谢谢。
    【解决方案2】:

    使用 Css 会比 JavaScript 更好。

    最终结果可能彼此相同,但在 Css 中会更容易,并且不那么“hacky”。​​

    如果你只使用 JavaScript 来整理当用户按下 Ctrl + P 时打印时显示的元素,它会起作用。

    但如果用户点击菜单中的打印,则需要打印样式表来整理页面。

    【讨论】:

      猜你喜欢
      • 2019-08-13
      • 2011-09-26
      • 2018-12-24
      • 1970-01-01
      • 2019-01-16
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多