🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #49254

Dynamiczne ładowanie JS - eval() czy DOM?

#49254
From: 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.
Technical Details
Message-ID: <aea6e060-815c-4924-aacd-0160219df406@32g2000yqj.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!32g2000yqj.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!32g2000yqj.googlegroups.com!not-for-mail
From: WebCM <webcm123@gmail.com>
Newsgroups: pl.comp.lang.javascript
Subject: Dynamiczne ładowanie JS - eval() czy DOM?
Date: Fri, 21 Aug 2009 04:13:55 -0700 (PDT)
Organization: http://groups.google.com
Lines: 42
Message-ID: <aea6e060-815c-4924-aacd-0160219df406@32g2000yqj.googlegroups.com>
NNTP-Posting-Host: 83.1.217.52
Mime-Version: 1.0
X-Trace: posting.google.com 1250853242 22558 127.0.0.1 (21 Aug 2009 11:14:02 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Fri, 21 Aug 2009 11:14:02 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: 32g2000yqj.googlegroups.com; posting-host=83.1.217.52;  posting-account=KmuZcQoAAACFwi1E7xIpy-n6K4ZXwoJm
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.2)  Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit