作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
查看此 Paper.js sketch ,您可以在其中尝试使用 Ctrl+V 粘贴示例项目。此草图适用于 Firefox,但不适用于 Chrome 或 Opera(这是我测试的范围)。为什么会这样?如何修改此草图,以便我可以在 Chrome 中运行草图时使用 Ctrl + V 粘贴示例文本?
请注意,当您运行它时,会记录按键事件。在 Chrome 中,仅记录 Ctrl keyup 事件。在 Firefox 中,V keyup 和 Ctrl keyup 事件都会被记录下来。
最佳答案
问题似乎是 Chrome 在按下控制键时不会生成按键事件。 paperjs 中的逻辑依赖于 keypress 事件(最终)生成 keyup 事件。
这有点令人困惑,但你可以看看论文的 Key.js从 DomEvent.add(document, {
开始的行开始.你可以看到 handleKey
仅在 keypress
上调用非特殊键事件。 handleKey
是将关键代码插入charCodeMap
的代码.所以当keyup
事件发生纸张未找到code
在charCodeMap
并且不调用 handleKey
.
如何解决这个问题?
您正在做的事情很简单,所以也许只需要使用 native DOM 事件处理就可以搞定:
document.onkeyup = function (e) {
var code = e.which || e.keyCode;
if (code === 'v' && e.ctrlKey) {
// do your pasting here
}
}
您可能需要考虑其他浏览器变体,但这应该可以帮助您入门。如果您正在使用 jQuery,您应该考虑使用 jQuery 的 keyup功能。透明地处理跨浏览器问题。
关于javascript - Paper.js 事件行为因浏览器而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292205/
我是一名优秀的程序员,十分优秀!