javascript - 将带有事件监听器的元素传递给模板事件内的appendChild

标签 javascript meteor

此 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;
        }
      }());

编辑2
这是浏览器元素选项卡中的 Canvas enter image description here

最佳答案

您应该向 addEventListener 方法提供不带 on 前缀的事件类型,按照 EventTarget API .

这应该可以完成工作:

sigCanvas.addEventListener('mousemove', function(e) {
  console.log('mouse moving again');
});

关于javascript - 将带有事件监听器的元素传递给模板事件内的appendChild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38911448/

相关文章:

javascript - 未捕获的类型错误 - 无法读取 jQgrid 中未定义的属性 'msie'

javascript - 为什么要在服务器上构建 MEAN 应用程序?

javascript - 从事件更新 react 变量

javascript - 如何将 FlowRouter 与 Meteor 1.3.1 和 "Import"一起使用

javascript - event.target 在事件中未定义

javascript - 如何向现有用户添加新字段

javascript - 单击时使用 javascript 禁用 aspx 中的按钮并从代码隐藏中启用它

javascript - 将 Morris.js 图表导出为 PDF?

javascript - WebRTC - 如何更改现有流的音轨

Meteor.user() 在页面重新加载后返回 undefined