仅对打印进行DOM操作
DOM manipulation on print only
我想做
$('#foo').insertAfter('#bar');
只有当用户打印页面时,才会出现和。我不想在屏幕上执行任何脚本。
我意识到,如果我想操作样式,这将是简单的,因为那样我就可以在CSS中使用@media print {}
。然而,我试图实现的目标(DOM操作)不能用CSS实现,因此我需要使用JS。
我如何运行JavaScript(或jQuery) 只有当用户打印或打印预览?
如果你不关心跨浏览器的功能,你可以使用窗口。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');
}
};
小提琴
但是,如果用户使用菜单系统进行打印或使用右键进行打印,则此操作将不起作用。
相关文章:
- AngularJS-独立的控制器和DOM操作
- casper.waitForSelector无法处理动态DOM操作
- 页面加载后的 Dojo DOM 操作
- 我应该只在指令的链接 fn 中进行 DOM 操作吗?
- 将 DOM 操作与 Angular 控制器分离 - 需要最佳实践
- 文本内容长度在 DOM 操作后不会更改
- DOM 操作、向后兼容性和跨浏览器问题
- 为什么我需要使用 document.write 而不是 DOM 操作方法
- "撤消”;Javascript中的DOM操作函数
- JavaScript中面向对象DOM操作的混乱混乱
- 使用循环来简化DOM操作VanillaJS
- JavaScript-所有DOM操作函数都返回null/empty
- 浏览器使用Java而不是Javascript作为DOM操作语言
- DOMNodeInserted在对主体执行DOM操作时表现得很奇怪
- 使用 jQuery 或 AngularJS 的 DOM 操作和选择
- DOM 操作以重现订单列表
- 使用 PhantomJS 的 DOM 操作
- 如何在 AngularJS 中同时处理 DOM 操作和状态更改
- 如何使用Javascript在UL-LI块中进行简单的DOM操作
- 角度指令 DOM 操作行为