Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: new Image() niedobre?
Forum PHP.pl > Forum > Po stronie przeglądarki
kufalo
Witam,

Ostatnio coraz czesciej spotykam sie z pogladem, ze

Kod
new Image()

nalezy zastepowac przez rownowaznik
Kod
document.createElement('img')


Z czego to wynika?
Czy to pierwsze jest naprawde zle?
Niktoś
new Image()-prototyp zbliżony do obiektowości użytych w innych językach programistycznych.
Js ogólnie obiektowy nie jest-dlatego bezpieczniej używać naturalnych poleceń i funkcji js takich jak:document.createElement('img')
Czy się mylę?
Uriziel01
Z tego co pamiętam silnik JS w IE nie chwytał poprawnie
  1. new Image();
zegarek84
Widzę jak porównujesz obiekt Image z elementem drzewa DOM i śmiem twierdzić, że sam nie wiesz o co Ci chodzi bądź jeden z elementów niewłaściwie chcesz wykosztować w niestworzonych do tego celach (być może któraś przeglądarka oferuje wstawianie obiektu Image jako element drzewa DOM - nie będę tego sprawdzał)...

pytanie brzmi:
Co chcesz osiągnąć? - odpowiesz na to pytanie bądź dokładniej sprecyzujesz o co Ci chodzi to dostaniesz rzeczowe odpowiedzi... przyrównanie obiektu Image z elementem drzewa DOM img nijak ma się do siebie...
kufalo
Z poziomu JS tworze element IMG, przypisuje mu wartosc na src i wstawiam w body...

Ktorego mam natem uzyc, createElement czy new Image questionmark.gif

Poza tym, czy jest jakies inne zastosowanie?
Crozin
Cytat
Z poziomu JS tworze element IMG, przypisuje mu wartosc na src i wstawiam w body...
W takim razie powinieneś użyć document.createElement("img").
Cytat
Js ogólnie obiektowy nie jest-dlatego bezpieczniej używać naturalnych poleceń i funkcji js takich jak:document.createElement('img')
Czy się mylę?
Tak, mylisz się. JS jest językiem wieloparadygmatowym i OOP, chociaż oparte na modelu prototypowym, ma się w nim całkiem nieźle.
Sephirus
Ogólnie zgadzam się z @zegarek84 to znaczy:

new Image() - tworzy obiekt JS klasy Image.

document.createElement('img') = tworzy węzeł DOM (element HTML).

jeżeli zatem chcesz wrzucić obrazek w treść to powinieneś uzyć createElement. W innych przypadkach można stosować new Image (na przykład przy preload'zie obrazków).
kufalo
Rozumiem, ze jezeli chodzi o dopinanie listenetow to:
Kod
i=new Image()
i.onload=...


Kod
i=document.createElement('imd')
i.addEventListener('load',...,false)


i nie nalezy tego mieszac?
Sephirus
AFAIK

i.onload to to samo co i.addEventListener('load',...,false)

oczywiście poza IE, który ma attachEvent - ot tak żeby było śmieszniej wink.gif

Nie ma znaczenia czego użyjesz w tym przypadku ale... jak zwykle są zalecenia:

Nie powinno stosować się konstrukcji typu element.onCostam gdy mamy do czynienia z elementem, który ma mieć przypisane więcej niż jeden handler danego zdarzenia.

Przykładowo jeżeli dasz body onLoad i potem drugie onLoad to drugie zastąpi pierwsze - jeżeli natomiast wykorzystasz addEventListener/attachEvent to handlery zostaną wykonane "równolegle" wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.