javascript - 仅在打印时进行 DOM 操作

标签 javascript jquery dom

我想做

$('#foo').insertAfter('#bar');

仅当用户打印页面时。我不想在屏幕上执行任何脚本。

我意识到,如果我想操作样式,这会很简单,因为那样我就可以在 CSS 中使用 @media print {} 。然而我想要实现的目标(DOM操作)无法用CSS实现,因此我需要使用JS。

如何在用户打印或进行打印预览时运行 JavaScript(或 jQuery)?

最佳答案

如果您不关心跨浏览器功能,您可以使用 window.onbeforeprint事件,但仅在 IE 和 Firefox 6+ 中支持

window.onbeforeprint = function(){
     $('#foo').insertAfter('#bar');
};

另一种方法是覆盖 CTRL+P 击键

window.onkeydown = function(e){
  var char = String.fromCharCode(e.keyCode);  
  if(char == "P" && e.ctrlKey){
      $('#foo').insertAfter('#bar');
  }
};

Fiddle

但是如果用户使用菜单系统进行打印或右键单击进行打印,则此方法将不起作用。

关于javascript - 仅在打印时进行 DOM 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25030208/

相关文章:

javascript - 如何使用 jquery 传递数据提交表单

reactjs - svg <path/> 上的引用没有 "getTotalLength()"-方法

javascript - 在 Javascript 中处理时间跨度

javascript - 我需要使用字母数字校验和来验证输入字符串

javascript - 更改所有子对象的位置后删除 JSON 父对象

javascript - 允许用户浏览 url,然后使用 javascript 获取最终 URL

angular - 为什么使用 ViewContainerRef 而不是 *ngif?

javascript - 调整jquery中选定文本的字体大小

javascript - 将点击事件绑定(bind)到使用 jquery 即时生成的 div block

javascript - 试图让我的列表滚动并适合页面