• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pobieranie obiektu canvas i wyodrębnianie kontekstu - krótkie pytanie.

Object Storage Arubacloud
0 głosów
174 wizyt
pytanie zadane 3 lipca 2016 w JavaScript przez String Gaduła (4,520 p.)

Cześć :)
Dlaczego, gdy napiszę takie linijki kodu:

window.onload = function() {
  var canvas = document.getElementById("Canvas");
  var context = canvas.getContext("2d");
};

wszystko sprawnie działa - pobranie obiektu i wyodrębnienie kontekstu.

Jeśli jednak usunę window.onload
a tych 2 linijek:
 

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

Nie umieszczę w funkcji przypisanej do zdarzenia window.onload -> pobranie obiektu canvas nie zadziała..
Analogicznie dołączanie funkcji do zdarzeń rysowania nie zadziała gdy nie umieszczę ich w window.onload..
 

canvas.onmousedown = startDrawing;
 canvas.onmouseup = stopDrawing;

Pytam, dlatego że w starszych poradnikach wszędzie przypisywanie funkcji do zdarzeń zapisywane jest identycznie jak deklarowanie funkcji globalnych tzn. nie w żadnej z funkcji tylko w pliku.js

Podobnie z metodą addEventListener() : canvas.addEventListener('mousemove', nazwafunkcji);
Gdy zapiszę to w funkcji przypisanej do zdarzenia onload - wszystko działa. Gdy zapisze powyższe linijki kodu poza funkcjami - nie działa.

Czy coś się zmieniło? czy może tylko u mnie jest coś nie tak? Trochę drażni mnie takie wklepywanie wszystkiego do tego jednego zdarzenia. ;/

1 odpowiedź

+2 głosów
odpowiedź 3 lipca 2016 przez Magicone Nałogowiec (45,100 p.)
Obstawiam, że skrypt jest ładowany i wykonywany bezpośrednio przed parsowaniem reszty dokumentu, w tym elementu. Dlatego odwołując się do elementu tak naprawdę wynikiem jest… nic, co powoduje Twoje błędy. :D Tagi <script>, które dotyczą manipulacji na elementach DOM daj na koniec <body> i po problemie.
komentarz 4 lipca 2016 przez String Gaduła (4,520 p.)
edycja 4 lipca 2016 przez String
Oooo masakra. Faktycznie. Dlaczego na to nie wpadłem? -.- :D

Podobne pytania

–1 głos
1 odpowiedź 117 wizyt
pytanie zadane 2 maja 2016 w JavaScript przez czaro05 Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 69 wizyt
pytanie zadane 24 maja 2019 w HTML i CSS przez maciejbaciej Nowicjusz (120 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...