Article View: pl.comp.lang.javascript
Article #49254Dynamiczne ładowanie JS - eval() czy DOM?
From: WebCM
Date: Fri, 21 Aug 2009 11:13
Date: Fri, 21 Aug 2009 11:13
38 lines
2535 bytes
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-mailShow 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