此 Meteor 客户端代码无法在公共(public)方法中创建的 Canvas 上触发 mousemove
事件。 onmousemove
也失败了。
这可以做到吗?如果可以,怎么做?
Template.report.events({
'click #myElemnt': functionj(event) {
event.target.appendChild(lib.myCanvas());
}
})
//lib.js
lib = (function() {
return {
myCanvas: () => {
let canv = document.createElement('canvas');
//style it here
canv.addEventListener('onmousemove', function() {
console.log('moving');
}
return canv;
}
})();
编辑
这是更改语法后的代码部分
lib = (function() {
return {
myCanvas: () => {
let sigCanvas = document.createElement('canvas');
sigCanvas.style.position = 'absolute';
sigCanvas.style.width = 25 + 'em';
sigCanvas.style.height = 15 + 'em';
sigCanvas.style.top = -90 + 'px';
sigCanvas.style.left = -50 + 'px';
sigCanvas.id = 'signature';
sigCanvas.style.border = '1px solid black';
sigCanvas.addEventListener('onmousemove', function() {
console.log('mouse moving again');
}, false);
return sigCanvas;
}
}());
最佳答案
您应该向 addEventListener
方法提供不带 on
前缀的事件类型,按照 EventTarget
API .
这应该可以完成工作:
sigCanvas.addEventListener('mousemove', function(e) {
console.log('mouse moving again');
});
关于javascript - 将带有事件监听器的元素传递给模板事件内的appendChild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38911448/