簡體   English   中英

如何在腳本標簽中觸發事件監聽器<head>

[英]how to trigger event listeners in script tag in <head>

我有以下幾行代碼,如果將代碼塊放入body標記中,它將起作用,但是當我嘗試將其放入標頭中時,它將無法正常工作。

<script type="application/javascript" language="JavaScript">

        function writeMessage(canvas, message) {
            var context = canvas.getContext('2d');
            context.clearRect(0, 0, canvas.width, canvas.height);
            context.font = '18pt Calibri';
            context.fillStyle = 'black';
            context.fillText(message, 10, 25);
        }

        function getMousePos(canvas, evt) {
            var rect = canvas.getBoundingClientRect();
            return {
                x: evt.clientX - rect.left,
                y: evt.clientY - rect.top};
        }


        var canvas = document.getElementById("canvas_prime");
        var context = canvas.getContext("2d");

        canvas.addEventListener('mousemove', function(evt) {
        var mousePos = getMousePos(canvas, evt);
        var message = 'Mouse position: ' + mousePos.x + ',' + mousePos.y;
        writeMessage(canvas, message);
        }, false);

</script>

我猜是因為在<head>沒有觸發addeventlistener ,如何解決? 謝謝。

在獲得要綁定的元素之前,您不能綁定事件處理程序,在它們存在之前,您不能這樣做。

  1. 將獲取元素並綁定事件處理程序的代碼放入函數中
  2. 從元素存在后觸發的事件中調用該函數

例如:

addEventListener('load', bindEventHandlers);

function bindEventHandlers() {

    var canvas = document.getElementById("canvas_prime");
    var context = canvas.getContext("2d");

    canvas.addEventListener('mousemove', function(evt) {
        var mousePos = getMousePos(canvas, evt);
        var message = 'Mouse position: ' + mousePos.x + ',' + mousePos.y;
        writeMessage(canvas, message);
    }, false);
}

暫無
暫無

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

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