我正在尝试更新页面内容以便打印。我希望每个输入元素(文本框、列表等)都有标签(跨距),以防止打印时文本被截断。在打印之前,我要确保所有这些标签都反映了用户从各自的输入字段中输入的最新值。
我的第一个想法是在每个文本框后面放置一个标签,并在页面呈现中将其与相同的值绑定,然后根据CSS media属性隐藏/显示输入或标签。但是,我还需要为每个输入元素设置onchange
处理程序,以便在每次更改其值时更新其各自的标签。
我的下一个想法是使用onbeforeprint
和一些jQuery在一个位置动态更新当前值的标签。更干净,集中,更简洁的代码。
但据我所知,onbeforeprint
和onafterprint
仅在IE和Firefox中受支持。... 但是。。。每一篇文章或帖子我都能发现,谈论浏览器对这两个功能的支持都是从一个好的4、5年前,甚至更久以前!
所以我想知道,在过去的5年里,Chrome和Safari在任何时候都增加了对这两个功能的支持吗?
最佳答案
MDN page on onbeforeprint
在2013年11月14日被标记为更新版,它对Chrome、Opera和Safari说“不”,对IE说“是”,对Firefox说“6.0”。这与当前Chrome(版本34)和Safari的最后一个Windows版本(5.1.7)的检查结果一致。它们不会触发任何事件,在开发人员工具中,使用onbeforeprint
属性时,在开发人员工具的“事件侦听器”下不会显示任何onbeforeprint
侦听器。
2008年有一个WebKit bug report关于对beforeprint
和afterprint
事件缺乏支持,有一个建议的修补程序,但也有问题,似乎没有进展。
所以答案是“不”
比较onbeforeprint and onafterprint is not working in Chrome and IE?
至于可能的后续问题“那么,我应该用什么来代替呢?“,它应该作为一个新问题发布,有足够的细节(包括代码)来描述最初的问题——特别是,使用打印样式表不能做的部分是什么。
关于javascript - 现代浏览器是否支持onbeforeprint/onafterprint HTML事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22969552/