簡體   English   中英

將帶有事件偵聽器的元素傳遞給模板事件中的appendChild

[英]passing an element with an event listener to appendChild inside template event

此Meteor客戶端代碼無法在公共方法中創建的畫布上觸發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;
        }
      }());

EDIT2
這是瀏覽器元素選項卡中的畫布 在此輸入圖像描述

根據EventTarget API ,您應該為addEventListener方法提供不帶on前綴的事件類型。

這應該做的工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM