[JavaScript] Dołączanie plików

0

Witam,
można dołączyć plik z JavaScript do strony html:
<script language="javascript" type="text/javascript">
A czy jest możliwość dołączenia pliku z kodem JS do innego pliku z kodem JS.
Chciałbym kilka metod napisać w jednym pliku, ale używać w wielu innych plikach JS.

0
function include(filename) {
var body = document.getElementsByTagName('body').item(0);
script = document.createElement('script');
script.src = filename;
script.type = 'text/javascript';
body.appendChild(script);
}
0

Powyższy kod jest dobry, jak tylko chcesz go załadować i nie będziesz się odnosił do funkcji / zmiennych z tego pliku.
Jeśli natomiast będziesz chciał używać coś w stylu:

function Costam(){
include("http://twoj.plik/");
FunkcjaZNowegoPliku("x", "cs");
}

to niestety nie uda się ci to, gdyż parser nie czeka aż się załaduje ten plik, tylko jedzie dalej, czytając funkcję FunkcjaZNowegoPliku("x, "cs") która jeszcze nie istnieje.
Aby temu zapobiec, trzeba użyć ajaxa :P (albo popróbować z eventem onload znacznika script - nie próbowałem)
Ja używam Jquery to mam łatwo ->
http://docs.jquery.com/Ajax/jQuery.getScript#urlcallback

0

Faktycznie zapomniałem o tym. Jednak chyba nie jest to dobra praktyka dołączać w ten sposób inne pliki JS. Z tego co czytałem to Safari ma problemy z tym.

Pisałem kiedyś większą bibliotekę w JS i używałem właśnie tego mechanizmu do zhermetyzowania wszystkiego w jednej klasie. Jednak z perspektywy czasu patrząc wnioskuję, że to było złe wyjście.
Zastanawia mnie po co Ci taka konstrukcja. Nie lepiej wylistować wszystkie potrzebne pliki w nagłówku HTML?

Może będziesz miał mniej kodu HTML i będziesz odnosił wrażenie, że jest większy porządek ale kosztem dodatkowego kodu JS, który w dodatku nie zawsze będzie działał poprawnie.

Wybór należy do Ciebie :)

Pozdrawiam

0

Myślałem że może istnieje taka ładna deklaracja nazwy pliku w nagłówku... :-)
Nie będę jednak kombinował i będę dołączał wszystkie potrzebne pliki w nagłówku strony HTML.
Dzięki za odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1