Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS]Nie wyświetla zawartości znacznika canvas
Gamoń
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 23.03.2012

Ostrzeżenie: (0%)
-----


Witam. Nie wyświetla mi w żadnej przeglądarce zawartości znacznika canvas co robię źle ?

Kod
<!doctype html>
<html>
  <head>
    <link rel="stylesheet" href="de.css" />
    <script src="js/custom.js"></script>
  </head>
  <body>
        dawdwadwd
    <canvas id="draw" width="500" height="300">
    Wyświetli to jak canvas nie działa
    </canvas>

  </body>
</html>

Kod
var canvas = document.getElementById('canvas');
if (canvas.getContext){

  var c = canvas.getContext('2d');

  c.beginPath();
  c.moveTo(35, 10);
  c.lineTo(60, 40);
  c.lineTo(10, 40);
  c.lineTo(35, 10);
  c.stroke();
  
  c.fillText('a',30,60);
  c.fillText('c',110,60);
  c.fillText('b',70,130);
}


Ten post edytował Gamoń 16.05.2012, 18:42:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


Chodzi o to, że DOM musi być załadowany. DOM to w skrócie struktura HTML zapisana dla komputera w takiej formie, żeby mógł odnajdywać elementy( np. po id, class, itd. ). W chwili, gdy chcesz się dobrać do elementu( document.getElementById('canvas') ) ten element się jeszcze nie załadował do pamięci, więc de facto go nie ma. Rozwiązaniem jest właśnie zmiana kolejności lub zostawienie tak jak jest, a w kodzie JS:
Kod
onload = function(){
//tu już DOM jest załadowane - możesz wrzucić tu dotychczasowy kod
}


Drugi sposób jest lepszy, gdyż masz większy porządek w kodzie.

Warto dodać, że zdarzenie onload zadziała, gdy załaduje się cała strona, więc DOM, ale również obrazki i inne elementy( to wada tego rozwiązania, ale dotyczy się to głównie "ciężkich" stron ). Żeby wykona zdarzenie zaraz po załadowaniu DOM musisz... poczytać jak to się robi, bo dla starszych przeglądarek są różne metody.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 12:47