🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
3 messages
3 total messages Started by WebCM Fri, 21 Aug 2009 11:13
Dynamiczne ładowanie JS - eval() czy DOM?
#49254
Author: WebCM
Date: Fri, 21 Aug 2009 11:13
38 lines
2535 bytes
Tworzę grę logiczno-przygodową tylko w XHTML, CSS i JavaScript. Po
uruchomieniu gry wyświetli się ekran główny z wyborem poziomu i
opcjami (wygląd, język, muzyka OGG). Ewentualnie informacja o
potrzebie aktualizacji przeglądarki.

1) Na początku trzeba załadować główny plik językowy i pobrać menu.

Przejdźmy do procesu ładowania poziomu.

2) Kod XHTML - tutaj raczej AJAX i wstawienie kodu do odpowiedniego
obiektu <div>

3) Kod JS - informacje o pokojach, przedmiotach, funkcje, zmienne -
dla ładowanego poziomu...

4) Plik językowy dla ładowanego poziomu.

Do końca nie zdecydowałem, czy będzie podział na poziomy, czy nie. W
każdym razie 1) i 3) trzeba załadować dynamicznie.

Sposób 1. <head>
Tutaj wystarczy stworzyć za pomocą DOM obiekt <script> i dopiąć
atrybut SRC. Problemy mogą być w IE, ale zawsze można sprawdzić, czy
istnieją obiekty, które trzeba pobrać.

js = document.createElement('script');
js.src = 'plik.js';
head.appendChild(js);
[...]

Sposób 2. JSON + eval
Pliki pobieramy za pomocą AJAX, a potem zawartość wsadzamy do eval().
Panuje opinia, że eval() bardzo spowalnia skrypt.

eval(ajax.responseText);

Którym sposobem najlepiej ładować skrypty JS do tych celów? Ważne, by
nie pojawiły się problemy nawet na IE 6.
Re: Dynamiczne ładowanie JS - eval() czy DOM?
#49255
Author: Peter
Date: Fri, 21 Aug 2009 12:24
50 lines
2750 bytes
WebCM pisze:
> Tworzę grę logiczno-przygodową tylko w XHTML, CSS i JavaScript. Po
> uruchomieniu gry wyświetli się ekran główny z wyborem poziomu i
> opcjami (wygląd, język, muzyka OGG). Ewentualnie informacja o
> potrzebie aktualizacji przeglądarki.
> 
> 1) Na początku trzeba załadować główny plik językowy i pobrać menu.
> 
> Przejdźmy do procesu ładowania poziomu.
> 
> 2) Kod XHTML - tutaj raczej AJAX i wstawienie kodu do odpowiedniego
> obiektu <div>
> 
> 3) Kod JS - informacje o pokojach, przedmiotach, funkcje, zmienne -
> dla ładowanego poziomu...
> 
> 4) Plik językowy dla ładowanego poziomu.
> 
> Do końca nie zdecydowałem, czy będzie podział na poziomy, czy nie. W
> każdym razie 1) i 3) trzeba załadować dynamicznie.
> 
> Sposób 1. <head>
> Tutaj wystarczy stworzyć za pomocą DOM obiekt <script> i dopiąć
> atrybut SRC. Problemy mogą być w IE, ale zawsze można sprawdzić, czy
> istnieją obiekty, które trzeba pobrać.
> 
> js = document.createElement('script');
> js.src = 'plik.js';
> head.appendChild(js);
> [...]
> 
> Sposób 2. JSON + eval
> Pliki pobieramy za pomocą AJAX, a potem zawartość wsadzamy do eval().
> Panuje opinia, że eval() bardzo spowalnia skrypt.
> 
> eval(ajax.responseText);
> 
> Którym sposobem najlepiej ładować skrypty JS do tych celów? Ważne, by
> nie pojawiły się problemy nawet na IE 6.

Może ten artykuł pomoże Ci podjąć decyzję:
http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/

Wprawdzie mówi on o sensownym ładowaniu js bez blokowania ładowania 
strony, ale jest też garść jaka przeglądarka co obsługuje.

Swoją drogą ja bym skorzystał ze zwykłego DOM-a, czyli punkt 1).

-- 
Peter
Re: Dynamiczne ładowanie JS - eval() czy DOM?
#49256
Author: William Bonawentura
Date: Fri, 21 Aug 2009 12:25
8 lines
1337 bytes
> Sposób 1. <head>
Generuje spore problemy z uzyskaniem informacji kiedy ten skrypt został 
załadowany

> Którym sposobem najlepiej ładować skrypty JS do tych celów? Ważne, by nie 
> pojawiły się problemy nawet na IE 6.

Przez znacznik <script>. Dlaczego nie chcesz użyć naturalnej techniki ? 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads