查看此Paper.js sketch,您可以尝试使用 Ctrl + V 粘贴样本项目。这个草图适用于Firefox,但不适用于Chrome或Opera(这是我的测试范围)。为什么会这样,以及如何修改此草图以便我可以使用 Ctrl + V 在Chrome中运行草图时粘贴示例文本?
请注意,在运行它时,会记录键事件。在Chrome中,仅记录 Ctrl keyup事件。在Firefox中,都会记录 V 键盘和 Ctrl 键盘事件。
答案 0 :(得分:2)
问题似乎是当按下控制键时Chrome不会生成按键事件。 paperjs中的逻辑取决于keypress事件(最终)生成keyup事件。
这有点令人困惑,但您可以从开始DomEvent.add(document, {
的行开始查看论文的Key.js。您可以看到handleKey
仅在keypress
事件中调用了非特殊键。 handleKey
是将密钥代码插入charCodeMap
的代码。因此,当keyup
事件发生时,论文未在code
中找到charCodeMap
且未致电handleKey
。
如何解决这个问题?
你正在做的事情很简单,所以也许只使用本机DOM事件处理会处理它:
document.onkeyup = function (e) {
var code = e.which || e.keyCode;
if (code === 'v' && e.ctrlKey) {
// do your pasting here
}
}
您可能需要考虑其他浏览器版本,但这应该可以帮助您入门。如果你正在使用jQuery,你应该考虑使用jQuery的keyup函数。这可以透明地处理跨浏览器问题。