javascript - 在 Firefox 中处理 keydown 失败
问题描述
我试图在我的反应组件中覆盖页面的本机打印操作。我添加了这些行:
componentWillMount() {
document.addEventListener('keydown', this.handlePrintKeyDown.bind(this));
}
componentWillUnmount() {
document.removeEventListener('keydown', this.handlePrintKeyDown.bind(this));
}
handlePrintKeyDown = event => {
//(Cntrl + P)
if (event.ctrlKey && event.keyCode === 80) {
document.getElementById('printme').click();
event.preventDefault();
return false;
}
};
它适用于 Chrome 和 Edge,但在 Firefox 中,它仍会尝试打开默认打印。我必须补充一点,我要做的是打开一个窗口并使用react-to-print库触发打印我的组件的打印友好版本的内容。我错过了什么?
解决方案
在官方 Firefox 论坛上阅读以下说明:
显然 Firefox 根本不在乎。
document.onkeydown = event => { console.log(event); event.preventDefault(); }
停止 Chrome 中的页面保存选项,但在 Firefox 中对网页或扩展页面无效。
打开一个新窗口可能不能也不应该被阻止(但是从面板继承大小是愚蠢的,因为 Firefox 默认在弹出窗口中打开使用 browser.tabs.create({ }) 创建的新标签页)。
推荐阅读
- python - 我的问题是关于 python 中的字符串切片
- flutter - Flutter Web 滚轮在 Firefox 上缓慢滚动
- python - txt 文件排序(每行中的键:值) - '\n' 的问题
- wordpress - 在 docker 容器中自定义 Wordpress (WP) 主题
- angular - 单元测试 Angular 11 服务存根问题
- c - 如何在 Ada 中读取 C Void 指针?
- r - Using "contain" function with two arguments in R
- postgresql - pg_dump 错误“bash:/usr/bin/pg_dump:没有这样的文件或目录”
- javascript - 如何区分 DOCS 和 PSD base64 URL?
- react-native - REACT NATIVE 3D 立方体无法在 Android 上正确渲染。在 iOS 上运行良好。z-index 问题?