我正在开发一个chrome扩展,我在Notion页面上创建了一个context script。
如果用户专注于上下文脚本内的输入并点击退格键/删除,则输入中的字符将与概念页面上的内容一起删除。我通过添加onKeyDown
处理程序解决了这个问题:
export const onKeyDown = (evt: React.KeyboardEvent) => {
if (evt.key === 'Backspace') {
evt.stopPropagation()
}
}
现在,如果用户专注于上下文脚本中的输入并点击backspace/delete,则仅删除输入值。
我遇到了另一个问题,即无法通过按Ctrl+V或Cmd+ V将文本粘贴到输入中。当用户聚焦于上下文脚本内的输入并按Ctrl+V或Cmd+V时,文本将粘贴到概念页面中,而不是聚焦的输入。我试图通过添加来解决这个问题:
export const onKeyDownDefault = (evt: React.KeyboardEvent) => {
if (evt.key === 'Backspace') {
evt.stopPropagation()
}
// Ctrl+V or Cmd+V pressed?
if ((evt.ctrlKey || evt.metaKey) && evt.keyCode == 86) {
console.log('stop propagate')
evt.stopPropagation()
// evt.preventDefault()
}
}
但没有用。我可以看到控制台输出“停止传播”,但是文本没有粘贴到输入中。
1条答案
按热度按时间kmbjn2e31#
这可能是因为Notion正在侦听
paste
事件,所以请尝试也为paste
事件侦听stopPropagation
。工作示例:
非工作示例: