首页 > 解决方案 > 在 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库触发打印我的组件的打印友好版本的内容。我错过了什么?

标签: javascriptreactjsprinting

解决方案


在官方 Firefox 论坛上阅读以下说明:

显然 Firefox 根本不在乎。

document.onkeydown = event => { console.log(event); event.preventDefault(); }

停止 Chrome 中的页面保存选项,但在 Firefox 中对网页或扩展页面无效。

打开一个新窗口可能不能也不应该被阻止(但是从面板继承大小是愚蠢的,因为 Firefox 默认在弹出窗口中打开使用 browser.tabs.create({ }) 创建的新标签页)。

这是链接


推荐阅读